【发布时间】:2018-11-03 19:19:24
【问题描述】:
我想通过输入值来控制线程。
如果输入值为 1 则做某事。
什么都没有。
class Main {
class test implements Runnable{
public boolean flag = true;
public int val = 0;
@Override
public void run(){
while(true){
if(flag == true){
pt();
}
}
}
public void pt(){
System.out.println(val++);
flag = false;
}
}
public static void main(String[] args) {
Main m = new Main();
test r = m.new test();
Thread t = new Thread(r);
t.start();
Scanner reader = new Scanner(System.in);
while(true){
int n = reader.nextInt();
if(n==1){
r.flag = true;
// t.flag = true;
}
else{
r.flag = false;
// t.flag = false;
}
}
}
}
这是我的代码。
显然, 我知道 r.flag 不会改变 Thread t 的值。 因此,即使输入 1,也不会发生任何事情。 但 t.flag 是不可能的。对象 t 没有变量标志。
如何访问t.r.flag ....你能看懂吗?
我认为现在有些事情让很多傻瓜。
我是不是走错方向了?
【问题讨论】:
-
根据经验,应从同步方法中访问公共变量(此处为 test.flag)。
标签: java multithreading runnable