java实现线程通信的几种方式
前言
在多线程的世界里,线程与线程之间的交互无处不在,只不过在平时的开发过程中,大多数情况下,我们都在单线程的模式下进行编码,即使有,也直接借助框架自身的机制实现了,其实线程之间的通信在JDK中是一个比较深的问题,比如大家熟知的消息中间件的实现,从某种角度上讲,就借助了多线程通信的思想,下面总结了JDK中常用的几种实现线程通信的方式,提供参考
1、synchronized实现方式
可能很多小伙伴们会有疑问,synchronized是对共享资源加锁使用的,怎么和线程通信扯在一起呢?这里纠正一个小小的偏见,也是我近期才矫正过来的
我们要弄明白的一点是,为什么会存在线程通讯这个问题呢?根据一些技术大牛们的说法就是,多个线程之间需要相互传递一些参数、变量或者是各个线程的执行需要互相依赖各自的结果,比如我们熟知的生产者消费者模式,只有生产者生产出来了东西,消费者才能进行消费啊
这里模拟假如有2个线程,需要操作一个共享资源,即修改共享资源的数据,使用synchronized的方式如下:
public class SycDemo1 {private static Object lock = new Object();private static String weather = "sunny";public static void main(String[] args) {new Thread(()->{synchronized (lock){System.out.println("
java实现线程通信的几种方式相关推荐
- java线程通信的三种方式
1.传统的线程通信. 在synchronized修饰的同步方法或者修饰的同步代码块中使用Object类提供的wait(),notify()和notifyAll()3个方法进行线程通信. 关于这3个方法 ...
- linux系统线程通信的几种方式,Linux进程间通信-线程间通信
Linux作为一种新兴的操作系统,几乎支持所有的Unix下常用的进程间通信方法:管道.消息队列.共享内存.信号量.套接口. 1.管道 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动 ...
- java实现线程安全的三种方式
前言 一个程序在运行起来的时候会转换成进程,通常含有多个线程.通常情况下,一个进程中的比较耗时的操作(如长循环.文件上传下载.网络资源获取等),往往会采用多线程来解决. 比如现实生活中,银行取钱问题. ...
- Java创建线程池的几种方式
方式一:继承Thread类 新建一个类并该类声明为Thread的子类. 这个子类应该重写run类的方法.例如,计算大于规定值的素数的线程可以写成如下: class PrimeThread extend ...
- Java线程通信的几种方式
一.问题 有两个线程,A 线程向一个集合里面依次添加元素"abc"字符串,一共添加十次,当添加到第五次的时候,希望 B 线程能够收到 A 线程的通知,然后 B 线程执行相关的业务操 ...
- Java实现线程安全的几种方式
文章目录 一.不可变 二.互斥同步 三.非阻塞同步 1. CAS 2. AtomicInteger 3. ABA 四.无同步方案 1. 栈封闭 2. 线程本地存储(Thread Local Stora ...
- python 线程通信的几种方式_进程间通信和线程间通信的几种方式
进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...
- python 线程通信的几种方式_Python 线程、线程通信、多线程
这是一篇学习Python 线程相关的内容,记录一下以备复习和开发使用,技术有限,如有问题欢迎指出,多谢. 一.GIL 全局解释器锁(cpython) 1.为什么会有这个锁:为了线程安全,减少pytho ...
- C++11 线程通信的三种方式
前言:发出消息的线程叫做检测线程,响应消息的线程称为响应线程. C++11线程间的通信方式有三种: (1)通过条件变量进行线程间的通信 (2)通过标志位来通知线程间的通信 (3)通过std::furt ...
最新文章
- 【数据结构】单链表的逆序输出(两种方法)
- 前端中会用到的设计模式之单一职责原则
- 有赞11·11:全链路压测方案设计与实施详解
- Hadoop在Ubuntu下的安装配置(配置成功)
- boost::python::back_reference相关的测试程序
- OSChina 周日乱弹 —— 我叫张一条
- java 注解 target_详解JDK 5 Annotation 注解之@Target的用法
- matlab字符串数组里里固定格式的内容,字符串数组和字符数组中的文本
- transform: translate()
- qca956x flash usb
- SqlServer查看是企业版还是个人版
- STM32+IAP方案 实现网络升级应用固件
- 两种敏捷开发方式的工作流介绍
- 学生管理系统--【Java+MySQL】--数据库系统概论综合性实验
- 假期第一天,第一次见丈母娘~
- 用计算机能改装成万用表吗,电脑机箱风扇改装成DIY空调扇USB风扇
- ASUS Vivobook archlinux声卡驱动
- 牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)
- 链表中倒数第k个结点——《剑指offer》
- 电子科技大学计算机与科学学院,电子科技大学计算机科学与工程学院(网络空间安全学院)、资源与环境学院赴我所调研考察...