public class OnlyOneInMethod extends Object {
private String objID;
public OnlyOneInMethod(String objID) {
this.objID = objID;
}
public synchronized void doStuff(int val) {
print("entering doStuff()");
int num = val * 2 + objID.length();
print("local variable num=" + num);
try {
Thread.sleep(2000);
} catch (InterruptedException x) {
}
print("leaving doStuff()");
}
public void print(String msg) {
threadPrint("objID=" + objID + " - " + msg);
}
public static void threadPrint(String msg) {
String threadName = Thread.currentThread().getName();
System.out.println(threadName + ": " + msg);
}
public static void main(String[] args) {
final OnlyOneInMethod ooim = new OnlyOneInMethod("obj1");
Runnable runA = new Runnable() {
public void run() {
ooim.doStuff(3);
}
};
Thread threadA = new Thread(runA, "threadA");
threadA.start();
try {
Thread.sleep(200);
} catch (InterruptedException x) {
}
Runnable runB = new Runnable() {
public void run() {
ooim.doStuff(7);
}
};
Thread threadB = new Thread(runB, "threadB");
threadB.start();
}
}