多线程12天--01

来源:互联网 发布:天刀超帅胡歌捏脸数据 编辑:程序博客网 时间:2024/06/07 06:35

多线程间通信

 其实就是多个线程在操作同一个资源,

package day12;

class Res{
 String name;
 String sex;
}

class Input implements Runnable{
 Res r;
 Input(Res r){
  this.r = r;
 }
 public void run(){
  int x = 0;
  while(true){
   if(x==0){
    r.name = "mike";
    try {
     Thread.sleep(10);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    r.sex = "man";
   }else{
    r.name = "丽丽";
    try {
     Thread.sleep(10);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    r.sex = "女";
   }
   x = (x+1)%2;
  }
 }
}
class Output implements Runnable{
 Res r;
 Output(Res r){
  this.r = r;
 }
 public void run(){
  while(true){
   System.out.println(r.name+"......."+r.sex);
  }
 }
}

public class TestDemo1 { 
 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();
 }

}

运行结果:

丽丽.......女
丽丽.......女
mike.......女
丽丽.......女
丽丽.......女
mike.......man
丽丽.......女
丽丽.......女
丽丽.......女
丽丽.......女
丽丽.......man
mike.......man
丽丽.......man
mike.......man
mike.......man
mike.......女
mike.......女
mike.......man

问题:

输入线程和输出线程共用同一资源,出现线程安全问题。

寻找解决办法。

原创粉丝点击