码迷,mamicode.com
首页 > 编程语言 > 详细

多线程练习——同步之前

时间:2014-07-20 23:12:24      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:同步   多线程   java   

package 多线程;

public class Threadcommunicate {

	public static void main(String[] args) {
		info mess= new info();
		input in = new input(mess);
		output out = new output(mess);
		new Thread(in).start();
		new Thread(out).start();
	}

}
class info{
	String name;
	String sex;
}
class input implements Runnable{
	info info;
	int x = 0;
	public input(info info) {
		this.info=info;
	}
	@Override
	public void run() {
		while (true) {
			
			if (x==0) {
				info.name = "demo";
				info.sex = "man";
			} else {
				info.name = "莉莉";
				info.sex = "女生";	
			}
			x=(x+1)%2;
		}
	}
}
class output implements Runnable{
	info info;
	public output(info info) {
		this.info=info;
	}
	public void run() {
		while (true) {
			System.out.println("名字:"+info.name+"性别:"+info.sex);
		}
	}
}

/*
 * 输出
 名字:demo性别:man
名字:demo性别:女生
名字:demo性别:女生
名字:demo性别:man
名字:莉莉性别:man
名字:莉莉性别:女生
名字:莉莉性别:man
名字:莉莉性别:man
名字:莉莉性别:女生

原因:线程执行权的随机性,,当线程Input执行完name的时候  执行权被out夺走 
直接输出name和上次的sex导致 人所对的性别出错
*/



本文出自 “要么拼命,要么滚回去!” 博客,请务必保留此出处http://jiangzuun2014.blog.51cto.com/8732469/1440593

多线程练习——同步之前

标签:同步   多线程   java   

原文地址:http://jiangzuun2014.blog.51cto.com/8732469/1440593

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!