Поток Java не может читать изменения в данных, записанных основным потоком?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Поток Java не может читать изменения в данных, записанных основным потоком?

Сообщение Anonymous »

У меня есть класс 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 (фрагмент run() метода InputSearch):

Код: Выделить всё

 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.");
Для вывода я получаю только w и не найден n. Также отображается сообщение «Нет ответов за x секунд»..
Я ожидаю, что появятся оба найденных w и найденных n, а также сообщение «Нет ответов за x секунд». не печатается.

Код: Выделить всё

notif.reply
и notif.found были изменены, но похоже, что поток tS не прочитал новое значение?

Подробнее здесь: https://stackoverflow.com/questions/789 ... ain-thread
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»