NierNierNi 2020-05-06 23:12 采纳率: 0%
浏览 245

关于Java多线程运行机制。为什么循环3次“上课!”会被学生线程同时进行?如何才能实现老师线程的3句“上课!”打印完毕,再打印关于学生的语句呢?

图片说明

package 10weeks

import java.util.concurrent.TimeUnit;

public class ClassRoom implements Runnable {
    Thread student,teacher;
    ClassRoom(){
        student=new Thread(this);
        student.setName("东东");
        teacher=new Thread(this);
        teacher.setName("王教授");


    }
    public void run(){

        if(Thread.currentThread()==student){
            Stu();
        }
        else if(Thread.currentThread()==teacher){
            Tea();
          }
    }
    public  void Stu() {
            try{
                System.out.println(student.getName()+"正在睡觉,不听课");
                TimeUnit.HOURS.sleep(1);
            } catch (InterruptedException e) {
                System.out.println(student.getName()+"被老师叫醒");
            }
            System.out.println(student.getName()+"开始听课");
            System.out.println(student.getName()+"又开始睡觉");
            try {
                TimeUnit.HOURS.sleep(1);
            } catch (InterruptedException e) {
                System.out.println(student.getName()+"再次被叫醒");
            }
            System.out.println(student.getName()+"被教授罚站!");
            return;
    }
public synchronized void Tea(){
            while (student.isAlive()){
                for (int i=0;i<3;i++){
                    System.out.println("上课!");
                    try {
                       Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                student.interrupt();
    }
}

}
public class test13 {
    public static void main(String args[]){
        ClassRoom room=new ClassRoom();
        room.teacher.start();
        room.student.start();

    }
}
  • 写回答

1条回答 默认 最新

  • _Onelone丶 2020-05-07 11:09
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用