java线程间通信1--简单实例

 

线程通信

 

  一、线程间通信的条件

    1、两个以上的线程访问同一块内存

     2、线程同步,关键字 synchronized

  二、线程间通信主要涉及的方法

    wait();    ----> 用于阻塞进程

    notify();   ----> 用于唤醒进程

    notifyAll();  ----> 用于唤醒所有进程

  三、线程通信的图解

    

 

 

  四、线程通信的实例代码

      

 1 //主线程
 2 public class ThreadMain {
 3     
 4     public static void main(String[] args) throws InterruptedException {
 5         Buffer buffer = new Buffer();
 6         
 7         Thread_one thread_one  = new Thread_one(buffer);
 8         thread_one.start();     //启动子线程
 9         
10         Thread.sleep(1000);      //主线程睡眠1秒
11         
12         String name = Thread.currentThread().getName();
13         System.out.println(name);
14         buffer.doNotify();         //唤醒子线程
15     }
16 }

 

 1 //要访问的内存区
 2 public class Buffer {
 3     
 4     //进行包装
 5     public synchronized void doWait() {
 6         try {
 7             wait();
 8         } catch (InterruptedException e) {
 9             // TODO Auto-generated catch block
10             e.printStackTrace();
11         }
12     }
13     public synchronized void doNotify() {
14         notify();
15     }
16 }

 

 

 1 //子线程
 2 public class Thread_one extends Thread{
 3     private Buffer buffer;
 4     public Thread_one(Buffer buffer) {
 5         this.buffer = buffer;
 6     }
 7     @Override
 8     public void run() {
 9         //子线程睡眠
10         buffer.doWait();
11         //具体操作,显示当前线程名
12         String name = Thread_one.currentThread().getName();
13         System.out.println(name);
14     }
15 }

 

 

 

转载于:https://www.cnblogs.com/lrj1009IRET/p/8479958.html

数据预处理之数据平滑处理#matlab 介绍基于 MATLAB 的数据平滑方法,主要介绍 smooth 函数、smoothts 函数和 medfilt1 函数的用法。 阅读详情

相关推荐

【SOFA】SOFA框架+Win10+VS2019 配置

SOFA (Simulation Open Framework Architecture)官网 SOFA 是一个开源的仿真框架,用于实时的物理仿真,而且主要针对医学上的仿真。主要用于研究人员开发新的算法,也可以作为一个有效的快速成型工具或是物理引擎。 官网中给出的配置方法写的很清晰,有着各个库或者软件的版本要求,仔细看按版本要求来 官网配置地址 官网给了两种方 1.通过脚本自动配置 2. 自己下载相关库通过CMake进行生成 第一种 没使用,不知道是否好使,因为如果其中有下载的东西,国内不一定能成功,大家可

GordonWei 5260

JAVA之线程通信的实现案例

public class 多线程_5线程通信 extends Thread{ public static void main(String[] args) { //定义线程类,创建一个共享的账户对象 account3 a=new account3("abc",0); //创建两个取钱的线程对象 new drawthread3(a,"小明").start(); new drawthread3(a,"小红").sta...

遇安的博客 616

MagicDraw-需求图

MagicDraw学习笔记

木头征的博客 4136

java多线程间的通信实例

----线程间的通信 public class ListAdd1 { private volatile static List list = new ArrayList(); public void add(){ list.add("bjsxt"); } public int size(){ return list.size(); } public ...

pergoods的博客 346

AI驱动的iOS逆向工程自动化:14阶段工作流与Ghidra集成实践

逆向工程是软件安全分析的核心技术,通过反汇编、调试等手段解析程序内部逻辑与数据流。其原理在于将编译后的二进制代码还原为可理解的逻辑结构,从而发现潜在漏洞或理解软件行为。在移动安全领域,iOS逆向工程具有重要技术价值,能够用于安全审计、漏洞挖掘与恶意软件分析。传统iOS逆向依赖ipsw、class-dump、Frida等工具链组合,存在学习曲线陡峭与流程碎片化问题。本文介绍的ios-reverse-skills项目创新性地将14阶段逆向工程方法论封装为AI可调用的标准化脚本集,通过Ghidra脚本实现Swif

weixin_27268733的博客 434

1.2 固态变压器:传统工频变压器的局限与SST的技术起源

本小节明确传统工频变压器在电力系统中的基础定位与核心工作特性,系统分析其在新型电力系统场景下的固有技术瓶颈,梳理固态变压器(Solid State Transformer, SST,又称电力电子变压器Power Electronic Transformer, PET)从概念提出到工程化成熟的完整演进路径,为后续SST技术优势、设计需求与规范符合性要求的讲解建立底层逻辑,同时对应GB/T 40429-2021《电力电子变压器通用技术要求》的需求制定背景。

技术工作者 660

java线程间通信 实例_Java多线程基础——线程间通信

在使用多线程的时候,经常需要多个线程进行协作来完成一件事情。在前面两章分析了Java多线程的基本使用以及利用synchronized来实现多个线程同步调用方法或者执行代码块。但上面两章的内容涉及到的例子以及使用的多线程代码都是独自运行,两个程序除了竞争同一个对象以外,没有任何联系。这次内容将讲解当多个线程需要协作来完成一件事情的时候,如何去等待其他线程执行,又如何当线程执行完去通知其他线程结束等待...

weixin_30991277的博客 181

OpenGL绘制简单场景,实现旋转缩放平移和灯光效果

本项目实现了用OpenGL绘制一个简单场景,包含正方体、球体和网格,实现了物体的旋转、缩放、平移和灯光效果。附有项目完整代码,有详细注释。适合初学者熟悉opengl使用。

张竞成的博客 1万+

java多线程编程实例

        这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下。1.相关知识:Java多线程程序设计到的知识:(1)对同一个数量进行操作(2)对同一个对象进行操作(3)回调方法使用(4)线程同步,死锁问题(5)线程通信等等2.示例2.1三个售票窗口同时出售20张票程序分析:    (1)票数要使用同一...

延陵缥缈的博客 9万+

2023华为od机试【最小循环子数组】C++

2023华为od机试【最小循环子数组】C++ 给定一个由若干整数组成的数组nums,请检查数组是否是由某个子数组重复循环拼接而成,请输出这个最小的子数组。

MISAYAONE的博客 2185

【YOLOv8全方位学习手册】第四章 数据增强:从扩充数据到塑造模型的认知边界

"""使用 Albumentations 做自定义增强,兼容 YOLO 格式"""])# 转成 numpy# boxes 必须是 [[x_min,y_min,x_max,y_max], ...]# 在数据加载时调用你可以把集成到 PyTorch 的 Dataset 类里,或使用 Ultralytics 自带的DataLoader。

VectorShift的博客 211

java多线程-02-基本操作及线程通信示例

声明 线程的相关概念 1 线程状态 2 优先级 3 daemon线程 4 中断 5 suspend resume stop 6 对象监视器 7 wait和sleep 线程通信 1 基本概念 2 线程同步示例 参考资料 声明该系列文章只是记录本人回顾java多线程编程时候记录的笔记。文中所用语言并非严谨的专业术语(太严谨的术语其实本人也不会……)。难免有理解偏差的地方,欢迎指正。 另外,大神请绕路。

hylexus的博客 891

基于MATLAB的井筒多相流模拟

井筒多相流的模拟可以基于不同的数学模型和计算方法。其中,最常用的模型之一是多相流模型,它基于质量守恒、动量守恒和能量守恒等原理,描述了流体在井筒中的流动行为。对于井筒多相流的模拟和分析可以帮助我们理解和优化油气田开发过程中的流体行为,从而提高产量和效率。在本文中,我们将介绍如何使用MATLAB进行井筒多相流的模拟,并提供相应的源代码。需要注意的是,以上示例是一个简化的模拟,仅用于演示如何使用MATLAB进行井筒多相流模拟。实际应用中,我们需要考虑更多的物理过程和参数,并使用更复杂的数值方法和模型进行模拟。

AtdiHtml的博客 706

线程间通信wait notfiy 方法,wait释放锁,notfiy不释放锁

先运行t2线程,t2线程处于等待中,再运行t1线程,当t1线程list等于5,会唤醒t2线程,但是t1线程,需要都处理完才会释放锁,所以不能够达到实时通信, 需要达到线程中实时通信要用到CountDownLatch类 import java.util.ArrayList; import java.util.List; /** * wait notfiy 方法,wait释放锁,notfiy不释

崔崇东的博客 1537

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

线程间通信的几种实现方式

线程间通信的几种实现方式 首先,要短信线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析: 题目:有两个线程A、B,A线程向一个集合里面依次添加元素"abc"字符串,一共添加十次,当添加到第五次的时候,希望B线程能够收到A线程的通知,然后B线程执行相关的业务操作。 方式一:使用 volatile 关键字 基于 volatile...

InterfaceJ的博客 18万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java 线程间通信

Java线程间通信

WYSCODER的博客 6158

java线程间通信、线程池

文章目录第四章:线程状态4.1 线程状态概述4.2 Waiting (无限等待)和线程间通信4.3 线程间通信代码实战第五章:线程池5.1 线程池5.2 线程池的使用 第四章:线程状态 4.1 线程状态概述 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有几种状态呢?在API中java.lang.Thread.State这个枚举中给出了六种线程...

阿福呀 2140

线程间通信

线程间通信

m0_61787196的博客 1774

Java线程间的通信方式

**定义:**当多个线程共同操作共享的资源时,线程间通过某种方式互相告知自己的状态,以避免无效的资源争夺。通信的方式:**线程同步:**即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作。同步的话,仅仅传递的是控制信息,就是我什么时候运行结束,你什么时候可以来。对于线程间通信来说,线程间同步可以归纳为线程间通信的一个子集,对于线程通信指的是两个线程之间可以交换一些实时的数据信息,而线程同步只交换一些控制信息。在java中有几个关于

Wdradon的博客 5822

线程间通信方式

一般而言,在一个应用程序(即进程)中,一个线程往往不是孤立存在的,常常需要和其它线程通信,以执行特定的任务。如主线程和次线程,次线程与次线程,工作线程和用户界面线程等。这样,线程与线程间必定有一个信息传递的渠道。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的。线程间的通信涉及到4个问题:a.线程间如何传递信息;b.线程之间如何同步,以使一个线程的活动不会破坏另一个线程的活动,以保证计算结果的正确合理;c.当线程间具有依赖关系时,如何调度多个线程的处理顺序;

Bossking321的博客 3504

Java 是如何实现线程间通信的?

正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:Callable。本文代码:https://github.com/wingjay/HelloJava/blob/master/multi-thread/src/ForArticle.java下面我从几个例子作为切入点来讲解下 Java 里有哪些方法来实现线程间通信。如何让两个线程依次执行?那如何让两个线程按照指定方式有序交叉运行呢?

2501_92606851的博客 897

java线程间通信的方式

java线程间通信的方式1. 共享变量2. 等待/通知3. 管道流 1. 共享变量 volatile修饰的变量,线程间可见,可使用这种变量作为线程间传递消息的媒介; 延伸出来的,还有redis中的值,数据库中的值,都可以作为线程间共同访问的变量; 2. 等待/通知 同步代码中利用锁对象的wait和notify方法来进行通信; 经典案例如thread.join()方法,里面就是用等待通知机制实现的; 3. 管道流 管道输入/输出流和普通的文件输入/输出流或者网络输入/输出流不同之处在于,它主要用于线

没啥简介 5674

java干货 线程间通信

java干货 线程间通信

qq_51305563的博客 1419

java线程间通信

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界...

心猿意碼 1万+

java多线程与线程间通信

本文学习并总结java多线程与线程间通信的原理和方法,内容涉及java线程的众多常见重要知识点,学习后会对java多线程概念及线程间通信方式有直观清晰的了解和掌握,可以编写并分析简单的多线程程序。 进程与线程 进程:是一个正在执行的程序。 每一个进程执行都有执行顺序,一个执行顺序是一个执行路径,或者叫控制单元; 每一个程序启动时,都会在内存中分配一片空间,进程就用于标识这片空间,并

jerrying0203的专栏 1万+

Java并发线程间通信

简介:java既然作为支持多线程编程语言,当你开发两个或多个线程交换一些信息的应用程序时,线程间的通信还是很重要的。在这里使用wait()和notify()/notifyAll()方法以及syncrhoized关键字实现一个简单的线程间对话通信。您可以使用相同的概念来创建一个复杂的系统。 注意事项: 不了解wait()和notify()/notifyAll()方法看我上篇文章-点击 为什么使用sy...

倪先生的博客 182
上一篇: java基础--面对对象
下一篇: 五子棋的斜对角方向上的规则 -- java编程(简单粗暴版)
admin99900
博客等级 码龄12年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值