第九章 Java多线程机制 05_线程同步_二

第九章 Java多线程机制 05_线程同步_2

鱼欲遇雨:每日都学习一点,持之以恒,天道酬勤!不能用电脑时,提前补上!(2012.9.3)



怎么避免同步那?也就是避免同一时间对同一资源进行调用,方法就是用synchronize锁住当前的线程!

// TestSync.java

public class TestSync implements Runnable {
	Timer t = new Timer();
	public static void main(String args[]) {
		TestSync test = new TestSync();
		Thread t1 = new Thread(test);
		Thread t2 = new Thread(test);
		t1.setName("t1");
		t2.setName("t2");
		t1.start();
		t2.start();
	}

	public void run() {
		t.add(Thread.currentThread().getName());
	}
}

class Timer {
	private static int num = 0;

	public /*synchronized*/ void add(String name) {   //第一种用法
		synchronized (this) {                         //第二种用法!
			num ++;
			try
			{
				Thread.sleep(1);
			}
			catch (InterruptedException e)
			{
			}

			System.out.println(name + ", 你是第" + num + "个使用timer的线程。");
		}
	}
}

结果是:

t1, 你是第1个使用timer的线程。

t2, 你是第2个使用timer的线程。