美文网首页
多线程协作方式

多线程协作方式

作者: 萌妈码码 | 来源:发表于2018-08-20 23:00 被阅读0次

同步控制是并发程序必不可少的重要手段。JDK提供了很多多线程控制方法。

  1. 内部锁Synchronized

  2. 重入锁ReentrantLock
    1/2 比较请参考 Synchronized与ReentrantLock比较

  3. 信号量 Semaphore 允许多个线程同时访问某一个资源

  4. 读写锁ReadWriteLock 有效地帮助减少锁竞争,以提高系统性能。读写锁允许多个线程同时读,而考虑到数据完整性,写写操作和读写操作依然是需要相互等待和持有锁的。
    在系统中,如果读操作的次数远远大于写操作,则读写锁就可以发挥最大的功效,提高系统的性能。

  5. CountDownLatch 一种多线程控制工具类;让某一个线程等待直到倒计时结束,再开始执行。

  6. 循环栅栏CyclicBarrier 另外一种多线程并发控制实用工具,也可以实现线程间的等待,且功能比CountDownLatch 更加复杂和强大。
    CyclicBarrier 的计数器可以循环使用。比如,假设将计数器设置为10,当凑齐第一批10个线程之后,计数器就会清零,然后接着凑齐下一批10个线程。此外,CyclicBarrier 还可以接收一个参数作为barrierAction ,指定当计数器一次计数完成之后,系统会执行的动作。
    CyclicBarrier.await() 方法可能会抛出两个异常。一个是InterruptedException ,也就是在等待过程中,线程被中断,这使得线程在等待是依然可以响应外部紧急事件;另一个异常是CyclicBarrier特有的BrokenBarrierException。 一旦遇到这个一次杨,则表示当前的栅栏已经破损了,可能系统已经没有办法等待所有的线程到齐了。例如,第五个线程被中断,它会得到一个InterruptedException, 而其他9个线程会分别得到BrokenBarrierException。这个异常可以避免其他9个线程进行永久的、无谓的等待。

  7. 线程阻塞工具类LockSupport,可以在线程内任意位置让线程阻塞。
    Thread.suspend()相比,它弥补了由于resume()在前发生,导致线程无法继续执行的情况。和Object.wait()相比,它不需要先获得某个对象的锁,也不会抛出InterruptedException异常。
    LockSupport的静态方法park()可以阻塞当前异常。类似的还有partNanos(), parkUntil()等方法实现的限时等待。

参考
《JAVA高并发程序设计》 第三章 JDK并发包

相关文章

  • 多线程协作方式

    同步控制是并发程序必不可少的重要手段。JDK提供了很多多线程控制方法。 内部锁Synchronized 重入锁Re...

  • JAVA并发梳理(三) 多线程协作方式及实现原理

    线程间的基本协作方式请参考 多线程协作方式。在此基础上,结合源码梳理一下每种方式的实现原理。 Synchroniz...

  • JAVA高并发(四)

    线程间的协作: 多线程的世界线程并不孤立,线程间常见的协作方式以及java提供的支持: 最为经典的便是Obje...

  • java并发之线程协作

    在多线程开发中,常常在线程间进行切换或调度,那么就会出现线程协作。线程协作有几种方式如下: 阻塞/唤醒 让步 取消...

  • 4.线程通信

    线程协作-JDK API JDK中对于需要多线程协作完成某一任务的场景,提供了对应API支持。多线程协作的典型场景...

  • 多线程笔记1-线程的共享与协作

    什么是多线程的共享? 什么是多线程之间的协作? 多线程的共享:是指多个线程访问同一个对象。 多线程的协作是指:当A...

  • 高并发(6)- 多线程之间的协作

    @[TOC](高并发(6)- 多线程之间的协作) 前言 线程的协作 一、什么是线程的协作顾名思义,线程的协作就是多...

  • 对象共享:Java并发环境中的烦心事

    相关文章: 多线程安全性:每个人都在谈,但是不是每个人都谈地清 并发的意义在于多线程协作完成某项任务,而线程的协作...

  • 带你搞懂Java多线程(四)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • 11.9-全栈Java笔记: 线程并发协作(生产者/消费者模式)

    多线程环境下,我们经常需要多个线程的并发和协作。这个时候,就需要了解一个重要的多线程并发协作模型“生产者消费者模式...

网友评论

      本文标题:多线程协作方式

      本文链接:https://www.haomeiwen.com/subject/pweriftx.html