我有一堂课
Notif
(是的,我知道属性不应该公开):
class Notif {
public int found;
public String reply;
public Notif(int i){
found = i;
}
}
我在主线程中实例化一个:
Notif[] notif = new Notif[] {new Notif(0)};
然后我将其传递给另一个线程:
Thread tS = new Thread(new InputSearch(input, notif, neighbors, selfNum)); tS.start();
我在主线程中更改其属性:
notif[0].reply = "File " + msgs[i].fName + " found in " + msgs[i].Cx + ". - Computer " + nums.get(i);
notif[0].found = 1;
System.out.println("found w");
它应该读取
tS
线程中的值(InputSearch
的 run()
的片段):
while(System.currentTimeMillis() - start < hopCt*2000) {
if(notif[0].found != 0){
System.out.println("found n");
replies.add(notif[0].reply);
notif[0].found = 0;
}
}
if(replies.size() == 0)
System.out.println("No replies in " + hopCt*2 + " seconds.");
对于输出,我只得到
found w
而不是 found n
。 No replies in x seconds.
也会出现。
我希望 found w
和 found n
都会出现,并且 No replies in x seconds.
不会打印。
notif.reply
和notif.found
已更改,但tS
线程似乎没有读取新值?