线程间的互斥和同步

多线程间是互相协助和互相联系的,因此多线程间存在互斥和同步。

互斥和同步

多线程间存在并发访问共享资源(修改资源)时就会出现互斥,保证共享数据在同一时刻只被一个线程使用。

多线程同步是指一个线程由于某种原因(等待对象释放之类的)需要等待另一个线程执行完才能继续执行的现象,即线程间互相等待。

互斥和同步是不可分离的,互斥是实现同步的一种手段,临界区、互斥量和信号量都是主要的互斥实现方式,互斥是因,同步是果,互斥是方法,同步是目的。

Java中的实现

Java中wait()、notify()、notifyAll()三个方法就是用来实现线程同步的。

wait()处于等待队列,或超时结束等待。notify()通知第一个处于等待的线程,notifyAll()则唤醒所有等待线程一起竞争cpu。

Java中最基本的互斥同步手段就是synchronized。