Java之執行緒協調

鍾超發表於2011-11-19
package com.sinosuperman;

public class TestQuestion {
	static Shared shared = new Shared("michael", "guangzhou");
	public static void main(String[] args) {
		A a = new A();
		B b = new B();
		System.out.print(shared.getName() + ", ");
		for (int i = 0; i < 20; ++i) {
			a.run();
			System.out.print(shared.getName() + ", ");
			b.run();
			System.out.println(shared.getName());
		}
	}
	public static class A extends Thread {
		public void run() {
			synchronized (shared) {
				shared.setName("corleone");
			}
		}
	}
	public static class B extends Thread {
		public void run() {
			synchronized (shared) {
				shared.setName("chao");
			}
		}
	}
	public static class Shared {
		String name;
		String addr;
		public Shared(String name, String addr) { this.name = name; this.addr = addr; }
		public String getName() { return this.name; }
		public String getAddr() { return this.addr; }
		public void setName(String name) { this.name = name; }
		public void setAddr(String addr) { this.addr = addr; }
	}
}

相關文章