当前位置:编程学习 > JAVA >>

java线程等待原理

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();
}
}

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,