黑马程序员技术交流社区
标题:
线程间通信一个调用共用对象的问题,不能理解
[打印本页]
作者:
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的对象,他们就可以共同操作这个对象了
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();//开始运行
}
}
复制代码
作者:
zhou1234
时间:
2014-12-8 09:40
恩恩 谢谢你:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2