`

线程间通讯学习【一】

    博客分类:
  • Java
阅读更多
package com.zzl.thread;
/**
 * 线程间通讯
 * 所谓线程间通讯,即多个线程操作同一资源,但是操作的动作不同。
 * 下面演示的是线程间通讯出现的问题。
 */

class Resouce{
	String name;
	String sex;
}
class InRunnable implements Runnable{
	private Resouce r;
	public InRunnable(Resouce r){
		this.r = r;
	}
	@Override
	public void run() {
		int x = 0;
		while(true){
			if(x == 0){
				r.name = "mike";
				r.sex = "man";
			}else{
				r.name = "胖胖胖胖胖胖胖胖";
				r.sex = "女女女女女女";
			}
			x = (x+1)%2;
		}
	}
	
}
class OutRunnable implements Runnable{
	private Resouce r;
	public OutRunnable(Resouce r){
		this.r = r;
	}
	@Override
	public void run() {
		while(true){
			System.out.println(r.name+"    "+r.sex);
		}
	}
	
}

public class ThreadCommunication {
	public static void main(String[] args) {
		Resouce r = new Resouce();
		
		InRunnable in = new InRunnable(r);
		OutRunnable out = new OutRunnable(r);
		
		Thread t1 = new Thread(in);
		Thread t2 = new Thread(out);
		
		t1.start();
		t2.start();
		
	}

}


运行结果出问题了
胖胖胖胖胖胖胖胖    女女女女女女
胖胖胖胖胖胖胖胖    man
mike    女女女女女女
mike    女女女女女女
mike    女女女女女女
mike    man
mike    man
胖胖胖胖胖胖胖胖    女女女女女女
mike    女女女女女女
mike    女女女女女女
胖胖胖胖胖胖胖胖    man
胖胖胖胖胖胖胖胖    man
mike    man
mike    man
胖胖胖胖胖胖胖胖    女女女女女女
胖胖胖胖胖胖胖胖    女女女女女女
mike    女女女女女女
mike    女女女女女女
胖胖胖胖胖胖胖胖    man
mike    女女女女女女




分享到:
评论

相关推荐

    JAVA100例之实例64 JAVA线程间通讯

    在"JAVA100例之实例64 JAVA线程间通讯"的示例中,可能包含了上述一种或多种技术的实践应用。通过实际代码示例,我们可以更好地理解这些方法如何在实际场景中协调多线程的工作。学习和掌握这些通信机制对于编写高效、...

    界面线程工作线程之间的通讯

    在软件开发中,尤其是涉及到图形用户界面(GUI)的应用程序,界面线程和工作线程之间的通讯是一个重要的设计环节。界面线程,通常被称为主线程,负责处理用户交互和更新UI,而工作线程则用于执行耗时的操作,避免...

    在Visual C++中利用自定义消息实现线程间通讯C++源代码程序小实例

    通过分析和学习这个代码,你可以更深入地理解如何在Visual C++中利用自定义消息进行线程间通信。 要注意的是,线程间通信还涉及同步问题,比如使用`Mutex`、`Semaphore`或`Event`等同步对象来避免数据竞争和死锁。...

    Qt多线程通讯

    在“Qt多线程通讯”DEMO中,主线程可能创建了一个`QThread`实例,并启动它。接着,一个工作对象(可能是自定义的QObject派生类)被移动到子线程中。这个工作对象可能会有一个接收参数的槽函数,用于处理主线程传递...

    Android AIDL线程间通讯样例项目

    总结,这个"Android AIDL线程间通讯样例项目"是学习和理解Android进程间通信机制的一个宝贵资源。通过分析和实践项目中的`Apdu_Client_Test`和`Apdu_Main_Test`,开发者可以深入掌握AIDL的工作方式,以及如何在实际...

    多线程串口通讯实例源码

    - 从提供的"多线程串口通讯实例"源码中,我们可以看到如何结合上述知识点,实现一个同时读取Excel数据和进行串口通信的程序。 - 源码可能包括一个主线程负责用户界面交互,一个或多个子线程用于串口通信,确保数据...

    多线程事件对象通讯

    在多线程编程中,线程间的通信是一个关键部分,以协调不同线程间的工作并确保数据的一致性。在Windows编程中,一种常见的线程通信机制是使用事件对象(Event Object)。事件对象是一种内核对象,它可以用来同步线程...

    多线程同步和通讯完整示例

    synchronized关键字提供了基本的线程同步,而wait-notify机制和Lock接口则提供了更高级的线程通讯和控制手段。在实际开发中,根据具体需求选择合适的同步策略,可以提高程序的效率和正确性。通过学习和实践...

    多线程之间通讯5.rar

    在IT领域,多线程是程序设计中的一个重要概念,特别是在并发执行和性能优化时。当一个应用程序需要...通过阅读“多线程之间通讯.docx”文档和观看“第五节(join()用法).mp4”视频,可以更深入地学习这些概念和技巧。

    多线程UDP通讯例子

    标题"多线程UDP通讯例子"暗示我们将探讨如何在一个多线程环境中实现基于UDP的通信。在这样的系统中,可能有多个线程分别负责接收数据、发送数据或者处理接收到的数据,从而提高应用程序的响应速度和并行处理能力。 ...

    第一节(多线程通讯代码演示及解决线程安全问题)

    通过学习和理解上述知识点,并结合具体的代码演示(如第一节(多线程通讯代码演示及解决线程安全问题).mp4视频),开发者可以更有效地应对多线程编程中的挑战,编写出高效、稳定的多线程应用程序。

    disruptor高性能Java线程间通讯库

    Disruptor是一款由LMAX交易所开发的开源Java框架,它专为高并发环境下的线程间通信设计,致力于提供极低的延迟和高效的性能。在Java开发中,尤其是在需要处理大量并发请求的系统中,Disruptor是一个重要的工具,它...

    c#编写串口通讯代码 多线程实现

    以上知识点涵盖了C#中多线程串口通讯的基本原理和实践技巧,通过学习和掌握这些内容,开发者可以编写出高效、稳定的串口通信程序。在实际项目中,还需要根据具体需求和硬件环境调整和完善代码。

    异步和多线程socket通讯

    本文将深入探讨"异步和多线程socket通讯"这一主题,基于提供的描述和标签,我们将讨论如何利用多线程和异步机制来提升socket通信的效率和响应性。 首先,Socket是一种在应用程序与网络服务之间建立连接的接口,它...

    csharp多线程示例(全)

    通过学习和实践这些C#多线程示例,开发者能够更好地掌握如何在应用程序中有效地使用多线程,提高程序的性能和用户体验。在实际项目中,应根据任务特性和系统需求选择合适的线程管理策略,确保程序的稳定性和效率。

    多线程串口通讯实例

    而"多线程串口通讯实例_622"可能是一个源码文件,包含了完整的VC++项目代码,供开发者参考和学习。 总结来说,这个实例为开发者提供了一个实践多线程串口通信的范例,通过VC++编程语言,展示了如何在多个串口通信中...

    易语言线程通信

    通过阅读和理解这部分代码,我们可以深入学习如何在易语言中实现高效的线程间通信。 总的来说,易语言线程通信涉及到了线程的创建、消息的发送与接收等关键操作。理解和掌握这些知识点,能够帮助开发者编写出更加...

    多线程编程学习资料(适合中级读者)

    "多线程编程之三——线程间通讯"是多线程编程中的一大重点。线程间通讯是为了实现不同线程之间的协作,通常包括共享数据、信号量、事件、消息队列等机制。这部分将详细解释这些通信方式的使用和注意事项,比如如何...

    tcp多线程socket通讯

    自己闲暇时候写的socket多线程通讯模型,代码虽然比较简单,但是比较容易扩展,麻雀虽小,五脏俱全。

    多线程UDP通讯程序源代码

    本资源提供的"多线程UDP通讯程序源代码"就是一个很好的实践案例,它涉及到计算机网络中的用户数据报协议(UDP)和多线程编程技术。以下是关于这两个关键知识点的详细解释: 1. **用户数据报协议(UDP)**: UDP是...

Global site tag (gtag.js) - Google Analytics