原文地址:https://blog.csdn.net/Java_stud/article/details/82347135java
做者:四两数字先生[1]web
wait():令当前线程放弃 CPU 的资源,使别的线程能够访问共享的资源,而当前的线程排队等待再次对资源的访问微信
notify():唤醒正在排队的等待的同步资源的线程,编辑器
notifyAll():唤醒正在排队等待的全部的线程ide
测试java测试测试
在 java.lang.Object:flex
用这三个方法的注意点: 同步方法或者同步代码块里this
使用两个线程打印1----100.线程1和线程2交替打印spa
分析:.net
-
我先使用两个线程打印1---100,(先不用交替打印) -
而后在使用上面的三个方法,在代码里添加
public class PrintNum implements Runnable {
int num = 1;
@Override
public void run() {
synchronized (this) {
while (true) {
//唤醒wait()的一个或者全部线程
notify();
if (num <= 100) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":" + num);
num++;
} else {
break;
}
try {
wait();
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public class Test {
public static void main(String[] args) {
PrintNum printNum = new PrintNum();
Thread t1 = new Thread(printNum);
Thread t2 = new Thread(printNum);
t1.setName("甲");
t2.setName("乙");
t1.start();
t2.start();
}
}
运行效果:
参考资料
四两数字先生: https://me.csdn.net/Java_stud
本文分享自微信公众号 - 骇客与画家(hacker-and-painter)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。