第九章 Java多线程机制 05_线程同步_3
鱼欲遇雨:每日都学习一点,持之以恒,天道酬勤!不能用电脑时,提前补上!(2012.9.3)
线程同步
1 在java语言中,引入了对象互斥锁的概念,保证共享数据操作的完整性。每个对象都对应于一个可称为“互斥锁”的标记,这个标记保证在任一时刻,只能对一个线程访问对象。
2 关键字synchronized来与对象的互斥锁联系。当某个对象synchronized修饰时,表明该对象在任一时刻只能由一个线程访问。
synchronized的使用方法:
// TestDeadLock.javapublic class TestDeadLock implements Runnable {public int flag = 1;static Object o1 = new Object();static Object o2 = new Object();public void run() {System.out.println("flag = " + flag);if(flag == 1) {synchronized(o1) {try{Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}synchronized(o2) {System.out.println("1");}}}if(flag == 0) {synchronized(o2) {try{Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}synchronized(o1) {System.out.println("0");}}}}public static void main(String args[]) {TestDeadLock td1 = new TestDeadLock();TestDeadLock td2 = new TestDeadLock();td1.flag = 1;td2.flag = 0;Thread t1 = new Thread(td1);Thread t2 = new Thread(td2);t1.start();t2.start();}}