线程间的通讯
1.线程间的通讯:其实就是多个线程操作同一个资源
2.为什么这些操作线程的方法都要定义在Objec类中呢?
因为这些方法操作同步线程时,都必须 要标识他们线程持有的锁,
只有同一个锁中的被等待线程,可以被同一个锁上的notify锁唤醒。
不可以对不同锁中的线程进行唤醒也就是说等待和唤醒必须是同一个锁,
而锁可以是任意对象,所以被任意对象调用的方法。
public class InputOutDemo { public static void main(String[] args) { Res res = new Res(); Thread input = new Thread(new Input(res)); Thread output = new Thread(new Output(res)); input.start(); output.start(); } } //资源 class Res { String name; String sex; boolean flag; //类似于产生资源 public synchronized void set(String name,String sex){ if(flag){ try {this.wait();} catch (InterruptedException e){e.printStackTrace();} } this.name = name; this.sex = sex; this.notify(); flag = true; } //类似于消耗资源 public synchronized void out(){ if(!flag){ try {this.wait();} catch (InterruptedException e){e.printStackTrace();} } System.out.println(this.name +"----"+this.sex); this.notify(); flag = false; } } class Input implements Runnable { private Res res; //同步资源 public Input(Res res) { this.res = res; } @Override public void run() { int x = 0; while (true) { if (x == 0) { res.set("jack", "男"); } else { res.set("kally", "女"); } x = (x + 1) % 2; } } } class Output implements Runnable { private Res res; public Output(Res res) { this.res = res; } @Override public void run() { while (true) { res.out(); } } }
相关推荐
C++ 多线程编程之三----线程间通讯 C++ 多线程编程中,线程间通讯是非常重要的一部分。线程间通讯可以让不同的线程之间进行信息传递,实现协作和同步。在多线程编程中,线程间通讯可以使用全局变量、自定义消息等...
Windows 2000提供的常用对象可分成三类:核心应用服务、线程同步和线程间通讯。其中,开发人员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括互锁数据、临界段、事件、互斥体...
在"JAVA100例之实例64 JAVA线程间通讯"这个主题中,我们将深入探讨Java中实现线程间通信的几种主要方法。 1. **共享数据**:最直观的线程间通信方式是通过共享内存空间,即共享变量。只要对共享变量的操作是线程...
下面我们将围绕标题“线程间通讯”和描述“通过代码实现线程间通讯,实现等待、唤醒等机制”来深入讲解相关知识点。 1. **线程的基本概念**: - **线程**是操作系统分配处理器时间的基本单位,一个进程中可以有多...
jeromq-0.3.5.jar 线程间通讯
标题与描述均提到了“多线程编程之三——线程间通讯”,这明确指出了文章的核心主题:在多线程编程环境下,不同线程之间的通信机制。在现代软件开发中,尤其是涉及到高性能计算、并发处理以及分布式系统设计时,线程...
本项目“Android AIDL线程间通讯样例项目”旨在通过实例来演示如何利用AIDL进行跨进程的数据交换,从而让两个独立运行的Android应用或服务能够相互通信。以下将详细介绍AIDL的工作原理及其在实际项目中的应用。 ...
在Android系统中,线程间通信(Inter-Thread Communication,简称ITC)是应用程序开发中的重要环节,尤其在处理耗时操作或者优化UI性能时显得至关重要。线程间通信允许不同线程之间交换数据和执行任务,以确保主线程...
在Windows编程环境中,线程间通信(Inter-Thread Communication,ITC)是多线程应用程序中必不可少的一部分。本文将深入探讨如何在Visual C++中利用自定义消息来实现实现线程间的通信,并通过一个小型实例来阐述这一...
【Windows 2000线程间通信】是操作系统中的一种机制,允许同一进程或不同进程的线程之间进行信息交换。这一通信机制基于Windows 2000提供的内核对象,包括文件、文件映射、邮件槽和命名管道等多种方式。其中,文件和...
4. **线程间通信**:线程间通信允许线程之间交换信息,Java提供了多种机制,如`wait()`, `notify()`, `notifyAll()`,Python中则有`Condition`对象。 5. **线程休眠**:Java的`Thread.sleep()`方法可以让线程暂停...
本文介绍多线程间通讯的基本知识,并带有源代码。
"Java并发编程线程间通讯实现过程详解" Java并发编程线程间通讯实现过程详解是Java编程中非常重要的一部分,涉及到多线程之间的数据共享、同步和通信。在Java中,线程间通讯可以通过多种方式实现,本文将通过示例...
Disruptor是一款由LMAX交易所开发的开源Java框架,它专为高并发环境下的线程间通信设计,致力于提供极低的延迟和高效的性能。在Java开发中,尤其是在需要处理大量并发请求的系统中,Disruptor是一个重要的工具,它...
本示例集合旨在深入讲解C#多线程的概念,并提供实际可运行的代码示例,帮助开发者理解和应用多线程技术。 一、多线程基础知识 在C#中,多线程主要通过`System.Threading`命名空间来实现。线程是程序执行的独立路径...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在嵌入式系统开发中,线程间同步和通信是多任务环境下的核心问题,确保了各个线程间数据的一致性和程序的正确执行。STM32微控制器和RT-thread实时操作系统提供了丰富的机制来实现这一目标,其中信号量是常用的工具之...
在嵌入式系统开发中,线程间同步和通信是至关重要的部分,特别是在多任务环境中。STM32作为一款广泛应用的微控制器,结合RT-Thread实时操作系统,可以实现高效的线程管理和通信机制。本篇文章将重点讲解如何使用邮箱...
MFC多线程开发例程源码3是关于如何在MFC环境中实现线程间通讯的一个具体示例。线程间通讯(Inter-Thread Communication, ITC)在多线程应用中至关重要,因为不同线程可能需要共享数据或同步操作,从而确保程序的正确...