class Res
{
String name;
String sex;
}
class Input implements Runnable
{
private Res r;//这句是什么意思?跟Res r = new Res();有什么区别?
Input(Res r)
{
this.r=r;
}
public void run()
{
int x = 0;
while(true)
{
if(x==0)
{
r.name="mike";
r.sex="man";
}
else
{
r.name="丽丽";
r.sex="女女";
}
x=(x+1)%2;
}
}
}
class Output implements Runnable
{
private Res r;
Output(Res r)
{
this.r=r;
}
public void run()
{
while(true)
{
System.out.println(r.name+"-------"+r.sex);
}
}
}
class InputOutputDemo
{
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();
}
}
执行结果是什么?为什么是那样?
线程t2输出的为什么是t1处理后的r?
java多线程问题,请教大神,多谢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答
关注 private Res r;//这是在类中定义类的成员变量,而没有赋初始值,而你后面那句是对成员变量初始化。如果写成下面:
private Res r = new Res();
也是定义成员变量,但是定义的时候就给赋值了初值了。
你这段代码执行while(true)中没有break,所以是死循环,交替输出:mike-------man mike-------女女 丽丽-------女女 丽丽-------女女 丽丽-------man mike-------man mike-------女女 mike-------man 丽丽-------man mike-------女女
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料