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
原文地址:http://jiangzuun2014.blog.51cto.com/8732469/1440593