前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA入门_多线程_邮局派发信件

JAVA入门_多线程_邮局派发信件

原创
作者头像
后端码匠
修改2020-11-19 14:17:01
7390
修改2020-11-19 14:17:01
举报
文章被收录于专栏:后端码匠

JAVA入门多线程邮局派发信件

Postman

代码语言:txt
复制
package cn.campsg.java.experiment.entity;

public class Postman {
    private String postName;
    private int mailCount;

    public String getPostName() {
        return postName;
    }

    public void setPostName(String postName) {
        this.postName = postName;
    }

    public int getMailCount() {
        return mailCount;
    }

    public void setMailCount(int mailCount) {
        this.mailCount = mailCount;
    }

    public Postman() {
    }

    public Postman(String postName, int mailCount) {
        this.postName = postName;
        this.mailCount = mailCount;
    }

}

SendMails

代码语言:txt
复制
package cn.campsg.java.experiment.entity;

public class SendMails extends Thread {
    private Postman post;

    public Postman getPost() {
        return post;
    }

    public void setPost(Postman post) {
        this.post = post;
    }

    public SendMails() {
    }

    @Override
    public void run() {
        int count = 0;
        while (post.getMailCount() > 0) {
            System.out.println(post.getPostName() + " 还有" + post.getMailCount() + "封信。开始送第 " + (++count) + "封信!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            post.setMailCount(post.getMailCount() - 1);
        }
        System.out.println(post.getPostName() + " 已完成所有邮件派送!。");
    }
}

MainClass

代码语言:txt
复制
package cn.campsg.java.experiment;

import cn.campsg.java.experiment.entity.Postman;
import cn.campsg.java.experiment.entity.SendMails;

public class MainClass {
    public static void main(String[] args) {
        System.out.println("邮递员接收派发任务后开始送信:");
        for (int i = 0; i < 5; i++) {
            int mCount = (int) (1 + Math.random() * 10);
            Postman postman = new Postman("邮递员" + i, mCount / 2);
            SendMails sendMails = new SendMails();
            sendMails.setPost(postman);
            new Thread(sendMails).start();
        }
    }
}

题目描述

代码语言:txt
复制
本实验要求:以邮局送件为背景,模拟多人同时派发邮件,体验多线程的实际应用。

业务说明:
1.1. 本实验以实际生活中邮局派发邮件为业务背景。
1.2. 通常邮局每天都会有大量的邮件需要邮递员派发。
1.3. 根据邮件的性质以及发往地点的不同,安排不同人送件。
1.4. 为了快速处理好每日的发件工作,邮局需要安排多人同时发件。
1.5. 每个发件人每日定量发件,并将邮件逐一派发给不同收件人。
1.6. 本业务关键概念:邮递员、派件数量以及同时发件。
创建工程并配置环境:
2.1. 创建实验工程
2.2. 创建包
2.3. 创建包
创建邮递员实体类:
3.1. 创建奖项类:Postman。
3.2. 为Postman类创建属性,要求如下:
在这里插入图片描述
3.3. 为Postman类创建0参构造器。
3.4. 为Postman类创建2参构造器:
1) 构造器2参数分别为邮递员姓名和派送数量;
2) 在构造器内为对应的属性进行赋值:属性名等于对应参数。
创建邮局送信业务类:
4.1. 创建送信类:SendMails。
1) SendMails类需要继承线程类Thread,并且重写run方法。
4.2. 为SendMails类创建代表邮递员的属性,要求如下:
在这里插入图片描述
4.3. 为SendMails类创建0参构造器:
4.4. 为SendMails类实现发件方法,即重写接口run方法,要求如下:
本方法的业务逻辑实现要求如下:
1) 模拟邮递员送件工作;
2) 每送完一件暂停1秒,再开始下一次送件工作;
3) 送件时显示当前邮递员的代送信件数量,以及开始送第几封信件;
4) 每送完一件,更新邮递员的待送信件数量;
5) 当完成派件工作时,在控制台输出如下信息:
邮递员姓名+“已完成所有邮件派送!”。
显示同时派发信件结果:
5.1. 创建主类:MainClass;
5.2. 为MainClass创建入口主方法:main;
5.3. 在main中,创建5个不同的邮递员,并设置一定的派件量;
5.4. 在main中,创建5个驱动邮递员发件的对象,并为其配置邮递员;
5.5. 在main中,启动5个驱动邮递员发件的对象,开始模拟同时发件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JAVA入门多线程邮局派发信件
    • Postman
      • SendMails
        • MainClass
          • 题目描述
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档