读书人

java 线程等候原理

发布时间: 2012-12-21 12:03:49 作者: rapoo

java 线程等待原理

public class TestThread {int count=0;Object lock=new Object();transient boolean isWorking=true;Thread t1=new Thread(){public void run() {while(true){try {if(count++%10==0){System.out.println("睡觉");isWorking=false;synchronized (lock) {lock.wait();}isWorking=true;System.out.println("睡醒了");}else{System.out.println("睡"+count);Thread.sleep(100);}} catch (Exception e) {e.printStackTrace();}}}};Thread t2=new Thread(){public void run() {while (true) {try {if(!isWorking){System.out.println("醒醒啦!");synchronized (lock) {lock.notify();}}Thread.sleep(2000);} catch (Exception e) {e.printStackTrace();}}}};public TestThread() {t1.start();t2.start();}public static void main(String[] args) {new TestThread();}}


public class TestThread {

int count=0;
Object lock=new Object();
transient boolean isWorking=true;
Thread t1=new Thread(){
public void run() {
while(true){
try {
if(count++%10==0){
System.out.println("睡觉");
isWorking=false;
synchronized (lock) {
lock.wait();
}
isWorking=true;
System.out.println("睡醒了");
}else{
System.out.println("睡"+count);
Thread.sleep(100);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
};

Thread t2=new Thread(){
public void run() {
while (true) {
try {
if(!isWorking){
System.out.println("醒醒啦!");
synchronized (lock) {
lock.notify();
}
}
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};

public TestThread() {
t1.start();
t2.start();
}
public static void main(String[] args) {
new TestThread();
}
}

读书人网 >编程

热点推荐