multi-thread
同步:次序;互斥:临界资源一次只能为一个进程所用。
monitor 监测并发代码的重入
wait/notify必须存在于synchronized块中--针对的是一个监视器。wait之后其他线程可进入同步块执行,如缓冲区为空时读进程阻塞、写进程将数据送入缓冲区时读进程被唤醒。
java.lang.IllegalMonitorStateException
monitor : A mechanism to control access to objects one at a time
synchronized 单独使用与直接用于方法
synchronized, wait, notify结合
volatile每次针对该变量的操作都激发一次load and save。
生产消费者:product是拥有的,当大于一定值则停止生产,小于一定值则停止消费。
切换 yield 阻塞 wait 打断 interrupt 暂停 sleep 等待 join
结束阻塞 notify 终止 stop
interrupt 线程会不时地检测中断标识位,以判断线程是否应该被中断(中断标识值是否为true)。只影响到wait状态、sleep状态和join状态。被打断的线程会抛出InterruptedException。
Thread.interrupted()检查当前线程是否发生中断,返回boolean
synchronized在获锁的过程中是不能被中断的。
wait等阻塞方法会去检查(interrupt()方法是否将这个状态置为true)并抛出异常。如果在正常运行的程序中添加while(!Thread.interrupted()) ,则同样可以在中断后离开代码体
不能用try,catch来获取线程中的异常