两个线程,交替打印log
public class MyClass {
public static void main(String[] args) {
MyClass myClass = new MyClass();
Thread aThread = new Thread(new Runnable() {
@Override
public void run() {
while (true){
synchronized (myClass){
myClass.printThreadName("aaa");
try {
myClass.wait();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
myClass.notify();
}
}
}
});
Thread bThread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
synchronized (myClass) {
myClass.printThreadName("bbb");
myClass.notify();
try {
myClass.wait();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
});
aThread.start();
bThread.start();
}
代码比较简单,有海量的文章用来说明wait(), notify()的用法。不过需要强调的是:notify()方法执行后,被通知到的线程并不是立即执行,而是在notify()后面的代码执行完后,被通知到的线程才会从wait()处继续执行。换句话说,锁不会立即就释放掉。