(九)Java入门--多线程(3)线程间通信实例
2018-02-19 12:21
786 查看
一、线程间通信概念
多个线程处理同一资源,但是任务不同。二、线程间通信实例(参考代码:TreadCom1.java)
1、说明:Input和Output表示两个线程处理的两个任务,但是二者共同处理同一资源。2、代码:TreadCom1.java
//线程之间没有通信,对于同一资源, 只是一边输入,一边输出。 class Resourse { //公共资源 String name; String sex; } //输入线程 class Input implements Runnable { Resourse r; int x = 0; Input(Resourse r) //保证同一个对象,同一个资源 { this.r = r; } public void run() { while (true) { //同步代码块消除安全隐患 //不同的话,比如小强名字给了,但是性别还没执行的话,输出 //就变成小强。。。输出。。。nvnvnvnvnvnv synchronized (r) { //交换输入资源 if (x == 0) { r.name = "小强"; r.sex = "男"; } else { r.name = "小li"; r.sex = "nvnvnvnvnvnv"; } } x = (++x) % 2; } } } //输出线程 class Output implements Runnable { Resourse r; Output(Resourse r) //保证同一个对象,同一个资源 { this.r = r; } public void run() { while (true) { synchronized (r) { System.out.println(r.name + "。。。输出。。。" + r.sex); } } } } public class TreadCom1 { public static void main(String[] args) { //同一资源 Resourse r = new Resourse(); //不同任务 Input i = new Input(r); Output o = new Output(r); //不同线程 Thread t1 = new Thread(i); Thread t2 = new Thread(o); t1.start(); t2.start(); } }
说明:两个线程,一个输入、一个输出,处理同一资源,但是任务不同,一个输入数据,一个输出数据,所以,就要涉及线程间通信了,但是,上面的例子,线程之间并没明显的通信,下一节的涉及到等待唤醒机制就很明显了。
相关文章推荐
- Java基础(高级)——多线程的理解和Synchronized实例,以及线程间通信,wait,notify等方法
- (九)Java入门--多线程(4)线程通信--等待唤醒机制
- Java多线程中线程间的通信实例详解
- Java多线程之线程间通信--等待(wait)/通知(notify)机制,等待/通知之交叉备份实例
- (九)Java入门--多线程(5)线程通信--多生产者多消费者
- java多线程三之线程协作与通信实例
- java 多线程-线程通信实例讲解
- Java 多线程(七) 线程间的通信——wait及notify方法
- Java多线程与并发应用-(4)-传统线程通信技术试题
- Java 多线程(六)——进程间通信与线程间通信
- Java多线程-线程间通信Demo
- Java 多线程(一)线程间的通信
- (48)Java学习笔记——多线程 / 线程间通信 / 线程组 / 线程池 /
- java多线程系列5-死锁与线程间通信
- Java的多线程-线程间的通信(1)
- java多线程(三) 线程的同步与通信
- Java 多线程(六)——进程间通信与线程间通信
- Java【多线程知识总结(8)】线程通信,wait()与notify()的运用
- java 多线程 线程之间的通信
- 黑马程序员-19-java基础-多线程(2)-死锁与线程间通信(synchronized与Lock的区别及各自用法)