在线程开发中,常常会遇到资源共享与同步的问题,synchronized就是来解决这个问题的,可是当谈到Thread通信,它就不能全部胜任了,还需要notify、wait等来配合。
public class Demo {
private String msg = "";
private boolean isend = false;
public String getMsg() {
return msg;
}
public synchronized void setMsg(String msg) {
isend = false;
this.msg += msg;
System.out.println(this.msg);
if(this.msg.length()==4){
notify();
System.out.println(Thread.currentThread().getName()+ "...好了");
isend = true;
try {
System.out.println(Thread.currentThread().getName()+ "...wait");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"...notify");
}
}
public synchronized void checkMsg(){
if(this.msg.length()==4 || isend){
this.msg = "";
System.out.println(Thread.currentThread().getName()+ "...收到");
notify();
try {
System.out.println(Thread.currentThread().getName()+"...wait");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
基于RT-Thread 数字焊机与工业机器人通信网关.zip基于RT-Thread 数字焊机与工业机器人通信网关.zip基于RT-Thread 数字焊机与工业机器人通信网关.zip基于RT-Thread 数字焊机与工业机器人通信网关.zip基于RT-Thread ...
总结来说,RT-thread中的动态信号量是线程间同步和通信的重要工具,能够有效管理共享资源,避免竞态条件。在实际应用中,如STM32开发中控制硬件资源,如LED灯,通过信号量可以实现高效、可靠的控制逻辑。理解和熟练...
这种基于lwIP协议栈的实现方式不仅保证了通信的可靠性,还体现了rt-thread系统在网络通信方面的灵活性和高效性。对于嵌入式开发者来说,深入理解这些底层实现细节有助于更好地利用rt-thread提供的强大网络功能,从而...
通过这个参考工程,开发者可以学习如何在STM32上初始化RT-Thread,创建和管理线程,以及使用各种同步和通信机制。 在RTThread STM32标准库参考工程中,你可能找到以下关键知识点: 1. **RT-Thread初始化**:了解...
Qt库,一个跨平台的应用程序开发框架,提供了丰富的API来支持线程和进程间的通信。本实例将深入探讨Qt如何实现线程间通信以及线程与进程间通信,并提供简单易懂的代码示例。 一、Qt线程间通信 Qt通过信号和槽机制...
AndroidChannel is helper library for inter thread communication between main thread and worker thread. AndroidChannel uses HandlerThread for inter thread communication. Setup Gradle dependencies { .....
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
1. **通信设备**:例如路由器、交换机等网络设备,要求高度可靠和实时响应。 2. **消费电子**:智能手机、智能家电等,对用户体验有着极高的要求。 3. **汽车电子**:发动机控制系统、车载娱乐系统等,需要满足严格...
本示例涉及的主题是“Socket通信(Thread)”,这意味着它利用了Java的Socket类和多线程技术来实现在网络上的双向通信。下面我们将深入探讨这个主题。 首先,Socket在Java中被用来创建客户端和服务器之间的连接,它...
综上所述,实现Android模拟器和PC之间的Socket通信需要在PC端编写服务程序,Android端编写客户端程序,通过指定的IP地址和端口进行通信。确保Android应用有网络访问权限,处理好异常,以及正确地打开和关闭Socket...
- **嵌入式应用程序**:ThreadX适用于各种嵌入式应用场景,如移动设备、通信设备、汽车电子系统、医疗器械等。 - **实时软件**:ThreadX非常适合那些对外部事件需要快速响应的实时系统,例如控制系统、监控系统等。 ...
在嵌入式系统应用领域,特别是基于龙芯架构的系统,线程间的同步和通信是至关重要的。RT-Thread是一个轻量级实时操作系统,提供了多种机制来实现这一目标,包括信号量和邮箱。 信号量是RT-Thread中用于线程同步的一...
ThreadX的核心特性包括任务调度、中断处理、内存管理、同步和通信机制等。在5.1版本中,可能包含了对性能的优化、新的API函数、更好的调试支持以及对更多硬件平台的支持。"Setup.exe"文件是安装程序,用于在Windows...
在本文中,我们将深入探讨如何在RTThread操作系统上配置并调试FreeModbus协议,以便在STM32F103VCT6微控制器上实现主从通信。RTThread是一款轻量级、高效的实时操作系统,广泛应用于物联网设备。FreeModbus是Modbus...
在本项目中,我们主要探讨的是一个基于rt-thread操作系统实现的控制板系统,该系统用于对接控制通信模块和传感器模块,实现传感器数据的采集与上传。rt-thread是一个开源的、实时性良好的轻量级嵌入式操作系统,适用...
ThreadX RTOS 提供高级计划、通信、同步、计时器、内存管理和中断管理功能。 ThreadX API 服务 ThreadX API 是 ThreadX RTOS 的核心部分,提供了多种服务,包括: * tx_thread_create():创建一个新的线程 * ...
RT-Thread MCP2515驱动程序是专为在嵌入式系统中实现SPI到CAN(Controller Area Network)转换而设计的...通过理解和使用`mcp2515_drive.c`和`mcp2515_drive.h`中的代码,开发者可以轻松实现基于MCP2515的CAN通信方案。
RT-Thread单片机微操作系统电子书教程为嵌入式开发者提供了一种强大的工具,通过介绍内核对象、线程管理、时钟管理、同步和通信机制等内容,使开发者能够有效地管理嵌入式设备资源,实现多任务处理。本教程强调了RT-...
关于线程通信,ThreadX支持队列、管道和消息邮箱等多种通信方式。队列用于传输固定大小的数据块,管道可以传输可变大小的数据,而消息邮箱则结合了两者的优点,既可传输不同类型的数据,又能保证数据完整性。 ...