- wait,notify和notifyAll必须配合 Object Monitor一起使用.而park,unpark不用.
- park 和 unpark是以线程为单位阻塞和唤醒线程.而notify只能随机唤醒一个阻塞线程,而notifyAll唤醒所有线程,就不那么精确.
- park和unpark,可以先unpark. 但wait/notify,则不能先notify.
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.locks.LockSupport;
@Slf4j(topic = "c.TestParkUnPark")
public class TestParkUnPark {
public static void main(String[] args){
Thread t1 = new Thread(()->{
log.debug("start...");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.debug("park...");
LockSupport.park();
log.debug("resume");
},"t1");
t1.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.debug("unpark...");
LockSupport.unpark(t1);
}
}