使用synchronized 及 Object对象的wait()和notifyAll()方法, Code如下
package com.shiwei.thread; public class OddEvenRunable { private static Object lock = new Object(); public static void main(String[] args) { PrintNumber pOdd = new PrintNumber(true, lock); PrintNumber pEven = new PrintNumber(false, lock); Thread t1 = new Thread(pOdd); Thread t2 = new Thread(pEven); t1.start(); t2.start(); } } class PrintNumber implements Runnable{ Boolean flag; Object lock; public PrintNumber(Boolean flag, Object lock){ this.flag = flag; this.lock = lock; } public void run() { for(int i=1; i< 20; i=i+2){ synchronized(lock){ if(flag){ System.out.println("a---"+i); }else{ System.out.println("b---"+(i+1)); } lock.notifyAll(); try { lock.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
I. synchronized 锁住的是对象
//@TODO
II. Object wait(), notify() 和notifyAll()
//@TODO
时间: 2024-10-11 06:38:06