JAVA的sleep方法让出CPU,给其他线程运行机会:
1 package synsleep; 2 public class Machine implements Runnable { 3 private int a=1; //共享数据 4 public void run() { 5 for(int i=0;i<1000;i++){ 6 synchronized(this){ 7 a+=i; 8 try{ 9 Thread.sleep(500); //给其他线程运行的机会 10 }catch(InterruptedException e){throw new RuntimeException(e);} 11 a-=i; 12 System.out.println(Thread.currentThread().getName()+":"+a); 13 } 14 } 15 } 16 17 public void go(){ 18 for(int i=0;i<1000;i++){ 19 System.out.println(Thread.currentThread().getName()+":"+i); 20 Thread.yield(); 21 } 22 } 23 public static void main(String args[]) throws InterruptedException{ 24 Machine machine=new Machine(); 25 Thread t1=new Thread(machine); 26 Thread t2=new Thread(machine); 27 t1.start(); 28 t2.start(); 29 machine.go(); 30 } 31 }