java-线程间通信
来源:互联网 发布:制作vpn客户端软件 编辑:程序博客网 时间:2024/06/07 08:42
一.基本的代码
线程间通信
多个线程在操作同一个资源,但是操作的动作不同
package day05;class Res{ String name; String sex;}class Input implements Runnable{ //构造函数,初始化 private Res r; Input(Res 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 Output implements Runnable{ private Res r; Output(Res r) { this.r=r; } @Override public void run() { // TODO Auto-generated method stub while(true) { System.out.println(r.name+"...."+r.sex); } } }public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub Res r=new Res(); Input in=new Input(r); Output out=new Output(r); Thread t1=new Thread(in); Thread t2=new Thread(out); t1.start(); t2.start(); }}
出错
mike....女女丽丽....女女mike....man丽丽....manmike....manmike....女女
二.增加安全锁
synchronized()
{
}
括号中可以填写的内容是
1.创建object对象
2.Input.class(因为这是唯一的)
3.使用Res r的唯一对象
package day05;class Res{ String name; String sex;}class Input implements Runnable{ //构造函数,初始化 private Res r; //Object object=new Object(); Input(Res r) { this.r=r; } @Override public void run() { int x=0; synchronized (r) {//object } while(true){ if(x==0) { r.name="mike"; r.sex="man"; } else { r.name="丽丽"; r.sex="女女"; } x=(x+1)%2; } }}class Output implements Runnable{ //Object object=new Object(); private Res r; Output(Res r) { this.r=r; } @Override public void run() { // TODO Auto-generated method stub while(true) { synchronized (r) {//object System.out.println(r.name+"...."+r.sex); } } } }public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub Res r=new Res(); Input in=new Input(r); Output out=new Output(r); Thread t1=new Thread(in); Thread t2=new Thread(out); t1.start(); t2.start(); }}
输出结果正确
阅读全文
0 0
- JAVA线程-线程间通信
- java 线程间通信
- java线程间通信
- Java线程间通信
- java线程间通信
- Java-线程间通信
- java线程间通信
- Java线程间通信
- java线程间通信
- java线程间通信
- Java线程间通信
- Java线程间通信
- Java线程间通信
- Java线程间通信
- Java线程间通信
- java-线程间通信
- Java线程间通信
- java线程间通信
- 分布式消息队列
- Tensorflow学习笔记-基于LeNet5结构的ORL数据集人脸识别
- golang获取命令行参数
- input radio value为中文时js获取radio
- UVA12563JinGeJinQu[h]ao
- java-线程间通信
- 颜色直方图
- 排序
- Unity之飞盘游戏设计思路
- 通过继承HystrixCommand来创建请求命令遇到的问题
- git基础
- 算法-->复数运算
- 康拓展开
- 抽象的概念和使用