您的位置:首页 > 编程语言 > Java开发

java多线程通信问题

2016-07-22 09:30 363 查看
wait(100L)意思为:不占用CPU,线程等待100毫秒

notify():唤醒正在排队等待同步资源的线程优先级最高者结束等待。

notifyAll():唤醒所有正在排队等待同步资源的线程。

并且这三个方法必须在synchronized块内执行否则会报异常

让两个线程循环打印1-100比如a打印1,b打印1,a2,b2

package com.thread.test1;

public class TestPrintOne {

/**
* @param args
*/
public static void main(String[] args) {
PrintOne one = new PrintOne();
Thread t1 = new Thread(one);
Thread t2 = new Thread(one);

t1.setName("1");
t2.setName("2");

t1.start();
t2.start();

}

}

class PrintOne implements Runnable {

@Override
public void run() {
for (int i = 0; i <= 100; i++) {
synchronized (this) {
//进入同步块的时候进行唤醒
notifyAll();
System.out
.println(Thread.currentThread().getName() + "打印的" + i);

try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: