一:同步机制(synchronized)
同步:在一个时间段内只能有一个线程运行某段代码块,在该线程运行的过程当中,
其余线程不能进入,只有该线程运行完毕该代码块(或释放了同步锁),其余
线程才能进入。
1.同步代码块
synchronized(同步对象){
// 同步代码块
}
在Java中,每个对象都有一个“锁”,同步对象的锁为“同步锁”(互斥锁),
只有保证同一个“同步锁”(互斥锁),才能达到多个线程在某一个时间段内
只能有一个线程运行同步代码块。
2.同步方法
访问权限 [static] synchronized 方法返回值 方法名(参数列表){
// 同步方法代码块
}
非静态同步方法的同步对象就是当前对象(this)---实例对象。
3.静态同步方法
含有static修饰的同步方法(static synchronized).
静态同步方法的同步对象是类对象。this
二:死锁(DeadLock) (了解)
多个线程互相持有对方须要的“互斥锁”,从而互相等待对方释放锁,陷入“假死”的
现象。
"哲学家就餐"问题线程
三:生产者-消费者模式 (了解)Producer-Consumer
1. wait(): 使当前线程等待。
2. notify():唤醒在此对象监视器上等待的单个线程
3. notifyAll():唤醒在此对象监视器上等待的全部线程。
以上三个方法都必须在同步机制中调用,并且必须使用同步对象调用。
每个Java对象都维护着一个线程等待池。对象