黑马程序员技术交流社区

标题: 线程间通信一个调用共用对象的问题,不能理解 [打印本页]

作者: zhou1234    时间: 2014-12-5 08:40
标题: 线程间通信一个调用共用对象的问题,不能理解

class Test1
{
        String name;
        String sex;
}
class Inter implements Runnable
{
        private Test1 t;//这句话什么意思啊?????????????,是怎么调用的对象啊?
        Inter(Test1 t)//还有这句
        {
                this.t=t;
       
        }
        public void run()
        {
                int x=0;//设置一个局部变量
                while(true)
                {
                        synchronized(t)
                        {
                        if(x==0)//交替往里面赋值
                        {
                                t.name="lili";
                                t.sex="女";
                        }
                        else
                        {
                                t.name="mike";
                                t.sex="man";
                       
                        }
                        x=(x+1)%2;
                        }
                }
        }
}
class Outer implements Runnable
{
        private Test1 t;//
        Outer(Test1 t)
        {
       
                this.t=t;
        }
        public void run()
        {
                while(true)
                {
                        synchronized(t)
                        {
                        System.out.println(t.name+"...."+t.sex);//输出打印
                        }
                }
        }
}




class  Test1Demo
{
        public static void main(String[] args)
        {
                Test1 t=new Test1();//创建对象
                Inter i=new Inter(t);//创建对象
                Outer o=new Outer(t);//创建对象
                Thread t1=new Thread(i);//将对象导入Thread
                Thread t2=new Thread(o);
                t1.start();//开始运行
                t2.start();//开始运行
        }
}

作者: caobin    时间: 2014-12-5 09:06
其实很好理解哦,楼主。①这句话的意思就是新建一个引用来接收要调用的对象
②这个就是线程的构造函数了,你在main函数中不是将t传给Inter和Outer吗,这个构造函数就同时接收了Test1的对象,他们就可以共同操作这个对象了



  1. class Test1
  2. {
  3.         String name;
  4.         String sex;
  5. }
  6. class Inter implements Runnable
  7. {
  8. ①private Test1 t;//这句话什么意思啊?????????????,是怎么调用的对象啊?
  9. ②Inter(Test1 t)//还有这句
  10.         {
  11.                 this.t=t;
  12.         
  13.         }
  14.         public void run()
  15.         {
  16.                 int x=0;//设置一个局部变量
  17.                 while(true)
  18.                 {
  19.                         synchronized(t)
  20.                         {
  21.                         if(x==0)//交替往里面赋值
  22.                         {
  23.                                 t.name="lili";
  24.                                 t.sex="女";
  25.                         }
  26.                         else
  27.                         {
  28.                                 t.name="mike";
  29.                                 t.sex="man";
  30.                         
  31.                         }
  32.                         x=(x+1)%2;
  33.                         }
  34.                 }
  35.         }
  36. }
  37. class Outer implements Runnable
  38. {
  39.         private Test1 t;//
  40.         Outer(Test1 t)
  41.         {
  42.         
  43.                 this.t=t;
  44.         }
  45.         public void run()
  46.         {
  47.                 while(true)
  48.                 {
  49.                         synchronized(t)
  50.                         {
  51.                         System.out.println(t.name+"...."+t.sex);//输出打印
  52.                         }
  53.                 }
  54.         }
  55. }




  56. class  Test1Demo
  57. {
  58.         public static void main(String[] args)
  59.         {
  60.                 Test1 t=new Test1();//创建对象
  61.                 Inter i=new Inter(t);//创建对象
  62.                 Outer o=new Outer(t);//创建对象
  63.                 Thread t1=new Thread(i);//将对象导入Thread
  64.                 Thread t2=new Thread(o);
  65.                 t1.start();//开始运行
  66.                 t2.start();//开始运行
  67.         }
  68. }
复制代码





作者: zhou1234    时间: 2014-12-8 09:40
恩恩 谢谢你:lol




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2