多线程同步和互斥的几种实现方式

1. 线程同步:
        指线程之间所具有的一种制约关系,一个线程的执行依赖另外一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。

2. 线程互斥:
        指对于共享的进程系统资源,每个线程访问时的排他性。当有若干个线程都要使用某一个共享资源时,任何时刻最多只允许一个线程去使用,其他线程必须等待,知道占用占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步。

3. 线程间的同步方法大体可以分为两类:
        用户模式和内核模式
                a 用户模式:原子操作,临界区

                        临界区(Critical Section):适合一个进程内的多线程访问公共区域或代码段时使用

                b 内核模式:事件、信号量、互斥量

                        事件(Event):通过线程间触发事件实现同步互斥

                        互斥量 (Mutex):适合不同进程内多线程访问公共区域或代码段时使用,与临界区相似
                        
                        信号量(Semaphore):与临界区和互斥量不同,可以实现多个线程同时访问公共区域数据,原理与操作系统中PV操作类似,先设置一个访问公共区域的线程最大连接数,每有一个线程访问共享区资源数就减一,直到资源数小于等于零

                内核模式就是利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需要切换内核态,只在用户态完成操作

更多学习资料可关注:itheimaGZ获取

你可能感兴趣的:(java)