亿朵发发 2022-06-02 21:36 采纳率: 0%
浏览 115

使用多线程模拟员工宿舍分配流程

JAVA使用多线程模拟员工宿舍分配流程,具体要求如下:
(1) 定义“Employee”类,包括两个成员变量:“id”和“dormId”。成员变量“id”唯一标识“Employee”类的对象,并且在分配宿舍时分配成员变量“dormId”;
(2) 生成80个“Employee”类实例并将其存储在HashSet中。
容器只需要存储Employee类型,不能存储id相同的Employee类的实例(提示:需要重写hashCode()和equals()方法);
(3) 使用4个线程将这些员工实例随机分配到4个宿舍楼。每个宿舍楼有20名员工,并根据他们在宿舍楼中的分配顺序分配dormId,例如:0306,表示宿舍楼3的6号房间。同时,“id”和“dormId”作为结果保存在文件“employee.txt”中

  • 写回答

2条回答 默认 最新

  • B.w.. 2023-06-10 20:43
    关注

    用了三个宿舍,还是有一定瑕疵,但是写文件,互斥基本解决了 (主要针对第三问)

    
    package pt;
    import java.awt.print.Printable;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import javax.swing.Box.Filler;
    public class practice implements Runnable{
        
        private int num = 0;        
        
        @Override
        public void run() {
            for(int i=0; i<40; i++){
                live();                   
            }
        }
        
        public  void live(){
             try {
                  File file = new File("employ.text");
                  if(!file.exists()) {
                        file.createNewFile();
                  }
                  FileWriter fileWriter = new FileWriter(file.getName(),true);
                  try {
                        Thread.sleep(300);    //休息300毫秒
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }        
                    if(this.num<=80){    
                        //打印买票信息
                        System.out.println(Thread.currentThread().getName() + "入住id: " + this.num++);
                        fileWriter.write(Thread.currentThread().getName() + "入住id: " + this.num++);
                        fileWriter.close();
                    }
                
            } catch (IOException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
         
        }
        
    
    public static void main(String[] args) {
            
             practice ticketThread = new practice();
            new Thread(ticketThread,"宿舍1").start();    //线程一
            new Thread(ticketThread,"宿舍2").start();    //线程一
            new Thread(ticketThread,"宿舍3").start();    //线程一
        }
    }
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月2日

悬赏问题

  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥15 shein测试开发会问些啥我是写java的
  • ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
  • ¥15 opnet仿真网络协议遇到问题
  • ¥15 在安装python的机器学习程序包scikit-learn(1.1版本)时遇到如下问题