博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程通信 3种方式
阅读量:3922 次
发布时间:2019-05-23

本文共 574 字,大约阅读时间需要 1 分钟。

一、传统线程通信synchronized + wait + notify

Object类的wait()、notify() 、notifyAll()三个方法必须由同步监视器对象来调用,分两种情况:

a)同步方法,该类默认实例(this)就是同步监视器,可以在同步方法中可以直接调用

b)同步代码块,同步监视器是synchronized后括号里的对象,所以必须使用此对象调用这三个方法

二、使用Condition控制线程通信lock + condition + await + signal

Lock代替同步方法或同步代码块,Condition替代同步监视器的功能。

private final Lock lock = newReentrantLock();

private final Condition con =lock.newCondition();

lock.lock(); con.await(); con.signalAll(); lock.unlock():

三、使用阻塞队列(BlockingQueue)控制线程通信

BlockingQueue接口主要作为线程同步的工具。当生产者试图向BlockingQueue中放入元素,如果队列已满,则线程被阻塞;当消费者试图向BlockingQueue中取出元素时,若该队列已空,则线程被阻塞。

在这里插入图片描述

转载地址:http://bwugn.baihongyu.com/

你可能感兴趣的文章
c++ web编程:写出你的CGI程序
查看>>
Linux RPM 命令参数使用详解 查看 rpm包依赖性
查看>>
xz压缩命令
查看>>
Mysql各种存储引擎对比总结(常用几种)
查看>>
java为我们已经提供了各种锁,为什么还需要分布式锁?
查看>>
一文带你理解mysql中的分区表和合并表(一个常见知识点)
查看>>
Redis5.0数据淘汰策略详解(最新版本,面试常问)
查看>>
为什么 MongoDB 索引选择B-树,而 Mysql 选择B+树(精干总结)
查看>>
面试官:说说 Springboot 中的 javaConfig(基于Spring5.2)
查看>>
你的钱为什么被转走,这篇文章告诉你答案(CSRF详解)
查看>>
JVM中的一个小知识点:深堆和浅堆的概念
查看>>
HashMap的负载因子初始值为什么是0.75?这篇文章以最通俗的方式告诉你答案
查看>>
详解java中一个面试常问的知识点-阻塞队列
查看>>
除了Thread和Runnable,你还知道第三种创建线程的方式Callable吗
查看>>
java线程面试题集锦(第一版本)
查看>>
记一次java中三元表达式的坑(避免踩坑)
查看>>
面试官:如何实现一个乐观锁(小白都能看得懂的代码)
查看>>
CopyOnWriteArrayList,一个面试中经常问到的冷门容器
查看>>
设计模式之桥接模式
查看>>
设计模式之组合模式
查看>>