为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能用在Resource里定义的flag?

为什么不能用在Resource里定义的flag?

忧伤的民工 2017-12-21 22:35:20
源码如下:public class ThreadOfCommunication { public static void main(String[] args) {  // 创建资源  Resource resource2 = new Resource();  // 创建任务  Input input = new Input(resource2);  Output output = new Output(resource2);  // 创建线程,执行路径  Thread thread1 = new Thread(input);  Thread thread2 = new Thread(output);  // 开启线程  thread1.start();  thread2.start(); }}/* * Resource(资源) */class Resource { String name; String sex; boolean flag=false;}/* * input(输入) */class Input implements Runnable { Resource resource; public Input(Resource resource) {  this.resource = resource; } public void run() {  int x = 0;  while (true) {   synchronized (resource) {    if(flag)     wait();    if (x == 0) {     resource.name = "PIG";     resource.sex = "MAN";    } else {     resource.name = "丽丽";     resource.sex = "女";    }    flag=true;    notify();   }   x = (x + 1) % 2;  } }}/* * output(输出) */class Output implements Runnable { Resource resource; public Output(Resource resource) {  this.resource = resource; } public void run() {  while (true) {// 无限循环所以用while   synchronized (resource) {    if(!flag)     wait();    System.out.println(      Thread.currentThread().getName() + ";刑满释放人员姓名::" + resource.name + ";刑满释放人员性别:" + resource.sex);   }  } }}求解?
查看完整描述

2 回答

?
忧伤的民工

TA贡献17条经验 获得超4个赞

原因:局部定义的变量全局不能调用!

查看完整回答
1 反对 回复 2017-12-22
?
法球特效

TA贡献5条经验 获得超1个赞

内部的怎么用外部的。。。

查看完整回答
反对 回复 2017-12-25
  • 2 回答
  • 0 关注
  • 1225 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信