这里只是一个简单的实现,关于ThreadLocal使用
public interface LegacySystem {
public void call(int parameter);
public int errno();
}
public class LegacySystemImpl implements LegacySystem {
private ThreadLocal<Integer> thlocal = new ThreadLocal<Integer>();
public void call(int parameter) {
thlocal.set(new Integer(parameter));
}
public int errno() {
return thlocal.get();
}
}
public class Main1 extends Thread {
private static LegacySystem system = new LegacySystemImpl();
private int value = 0;
public Main1(int value) {
this.value = value;
}
public void run() {
while (true) {
System.out.println(Thread.currentThread().getName() + " checks.");
system.call(value);
try {
Thread.sleep(800);
} catch (InterruptedException e) {
}
int errno = system.errno();
System.out.println(Thread.currentThread().getName() + ": value = " + value
+ ", errno = " + errno);
if (value != errno) {
System.out.println("???");
System.exit(0);
}
}
}
public static void main(String[] args) {
new Main1(0).start();
try {
System.out.println("...befor sleeping... ");
Thread.sleep(5000);
System.out.println("...after sleeping... ");
} catch (InterruptedException e) {
}
new Main1(1).start();
}
}