public class Solution {
public static void main(String[] args) {
new NoteThread().start();
new NoteThread().start();
}
public static class Note {
public static final List<String> notes = new ArrayList<>();
public static void addNote(String note) {
notes.add(0, note);
}
public static void removeNote(String threadName) {
String note = notes.remove(0);
if (note == null) {
System.out.println("Другая нить удалила нашу заметку");
} else if (!note.startsWith(threadName)) {
System.out.println("Нить [" + threadName + "] удалила чужую заметку [" + note + "]");
} else {
System.out.println("Нить [" + threadName + "] удалила свою заметку [" + note + "]");
}
}
}
public static class NoteThread extends Thread {
int i = 0;
@Override
public void run() {
try {
while(i <= 999){
Note.addNote((getName() + "-Note" + i));
Thread.sleep(1);
Note.removeNote(getName());
i++;}} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
В данной задаче не понял кусок кода - "else if (!note.startsWith(threadName)) ", получается, что у нас за время ожидания Thread.sleep(1) успевает добавить несколько элементов в notes, далее сравнивает НЕ начинается ли note с threadName, если не начинается, то срабатывает тело данного блока, я правильно понял?? и второй вопрос: а как происходит сравнение, если note принимает значение удаляенного элемента?
HellScream
20 уровень
Не очень понял условие.
Новый
Комментарии
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
У этой страницы еще нет ни одного комментария