示例代码2:
package com.pinfo.test;
public class ThreadTest {
/**
* @param args
*/
public static void main(String[] args) {
MyThread myThread = new MyThread();
//使用Runnable实现类创建线程
Thread t1 = new Thread(myThread);
//启动线程
t1.start();
try {
//确保线程t1先执行
Thread.sleep(2000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
int i = 0;
//主线程使用myThread对象作为监视器
synchronized(myThread){
while(++i<=10){
try {
Thread.sleep(500);
System.out.println("The main thread.-->"+i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//调用监视器的notify()方法唤醒t1线程
myThread.notify();
}
}
}
class MyThread implements Runnable{
public void run(){
int i = 0;
//使用对象本身this作为监视器(与主线程的监视器为同一个对象)
synchronized(this){
while(i++<20){
try {
Thread.sleep(500);
System.out.println("The sub thread.-->"+i);
if(i==10){
//释放监视器锁,阻塞等待...
this.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
Java多线程的wait()和notify()例子
最新推荐文章于 2023-05-18 19:36:08 发布