同步
来源:互联网 发布:剑雨江湖进阶数据灵武 编辑:程序博客网 时间:2024/05/16 18:00
package comm;class Res { String name; String sex;}class Input implements Runnable { private Res r; public Input(Res r) { this.r = r; } public void run() { int x = 0; while (true) { synchronized (r) { //注意,两个线程加的锁应该是一样的,否则依然不同步, 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; public Output(Res r) { this.r = r; } public void run() { while (true) synchronized (r) { System.out.println(r.name + " , " + r.sex); } }}public class InputOutoutDemo { public static void main(String[] args) { 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(); }}
加的同步锁是Res r,确保两个线程的锁是同一个。
可能的输出结果是
mike , manmike , manmike , manmike , manmike , manmike , manmike , manmike , manmike , manmike , man丽丽 , 女女女丽丽 , 女女女丽丽 , 女女女丽丽 , 女女女
虽然输出没有出现不同步现象,但是并不是期望中的mike , man
,丽丽 , 女女女
交替出现。
0 0
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 同步
- 【IOS 开发学习总结-OC-29】★★objective-c之foundation 框架——(集合类)数组
- 怎么让安卓的真机的屏幕在电脑上显示?
- 63Unique Paths II
- IOS学习笔记1----MVC模式
- KVC和KVO的基本使用
- 同步
- 分支限界法(算法分析与设计)
- linux 文件路径的表示
- available()在不同的地方使用,结果不同
- 定时器的实现、java定时器Timer和Quartz介绍与Spring中定时器的配置
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- 第三方分与享登陆
- 【Java】组合模式
- 字符串全排列