package pkg_1;
public class ExpOnWaitMethod extends Thread {
static Double x = new Double(20);
public static void main(String[] args) {
ExpOnWaitMethod T1 = new ExpOnWaitMethod();
ExpOnWaitMethod T2 = new ExpOnWaitMethod();
T1.start();
T2.start();
}
public void run() {
Mag mag = new Mag();
synchronized (x) {
try {
for (int i = 1; i < 10; i++) {
mag.nop(Thread.currentThread());
x = i * 2.0;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Mag {
char ccc = 'A';
public void nop(Thread thr) throws InterruptedException {
System.out.print(ccc + " ");
ccc++;
if (thr.getState().toString().equalsIgnoreCase("runnable"))
Thread.currentThread().wait();
//thr.notify();
}
}
package pkg_1; public class ExpOnWaitMethod extends Thread { static Double x = new Double(20);
Share
You need to hold the lock on the object you want to
waiton (you can only call it within asynchronizedblock).Also, calling
waiton aThreadis very unusual and probably not what you want.I am not sure what you are trying to do, but could you be confusing
waitwithsleep?If you want to wait for another thread to finish, that would be
anotherThread.join().