线程小问题 ,求大神!!!

z77z 2015-09-13 03:33:53
public class Test2 {

//要求:制作两个线程对象,要求用同步块的方式使第一个线程运行2次,然后将自己阻塞起来,唤醒
//第二个线程,第二个线程再运行2次,然后将自己阻塞起来,唤醒第一个线程……两个线程交替执行。
public static void main(String[] args) {
Print1 p = new Print1();
MyThread1 myThread = new MyThread1(p);
new Thread(myThread, "线程1").start(); //开启线程1
new Thread(myThread, "线程2").start(); //开启线程2
}
}

class MyThread1 implements Runnable {
private Print1 p;

public MyThread1(Print1 p) {
this.p = p;
}

@Override
public void run() {
while(true){
p.method();
}
}

}

class Print1 {
private Object obj = new Object();

public void method() {
synchronized (obj) {
obj.notifyAll();
for(int i = 0;i < 2;i++){
System.out.println(Thread.currentThread().getName() + " is doing something!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
obj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}


这段代码里面 Thread.sleep(1000); 有什么用啊,我只晓得如果不用的话,程序最开始执行的时候会出现问题,
...全文
290 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluedreammer 2015-09-18
  • 打赏
  • 举报
回复
极限情况是while(1) ; 死循环,此时基本上cpu 占用率为满,如果没有其他更高优先级的线程/进程/中断执行的话
月凉西厢 2015-09-17
  • 打赏
  • 举报
回复
去掉不会有问题,你看到有问题是因为输出太多,控制台丢掉了前半部分输出
qq_22576671 2015-09-17
  • 打赏
  • 举报
回复
去掉不会出问题
z77z 2015-09-17
  • 打赏
  • 举报
回复
引用 7 楼 bluedreammer 的回复:
如果不sleep,循环体一直不让出cpu,导致其他系统线程无法得到cpu资源,此为线程编程大忌。
每个线程争夺cpu资源不是公平的吗,一个小小的循环不会把整个cpu霸占了吧
sophia1212 2015-09-17
  • 打赏
  • 举报
回复
好复杂~<a href=http://photoshopvip.net/wp-content/uploads/2009/01/sitemap.xml>哎</a>
bluedreammer 2015-09-17
  • 打赏
  • 举报
回复
如果不sleep,循环体一直不让出cpu,导致其他系统线程无法得到cpu资源,此为线程编程大忌。
z77z 2015-09-17
  • 打赏
  • 举报
回复
引用 5 楼 a34140974 的回复:
去掉不会有问题,你看到有问题是因为输出太多,控制台丢掉了前半部分输出
大概因为我是处女座吧,太纠结这些问题,应该不要在意这些细节
z77z 2015-09-16
  • 打赏
  • 举报
回复
引用 2 楼 windowsoahil的回复:
去掉应该也不会错吧,就是输出会变得很快
不用的话最开始会有问题的,可以试一下
解开者 2015-09-14
  • 打赏
  • 举报
回复
去掉应该也不会错吧,就是输出会变得很快
  • 打赏
  • 举报
回复
Thread.sleep(1000); 是让线程睡1秒钟,然后继续执行,写这个只是想把两个线程之间交替的速度降下来,方便查看控制台的输出

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧