Я следил за примером Java на cleancoders.com
https://cleancoders.com/videos/java-case-study
Видеоролики также можно найти здесь:
https://www.safaribooksonline.com/videos/clean-code-applied/9780134843810
Вокруг Эпизода 4-5, они добавляют некоторые примитивы синхронизации, которые для меня просто зависают.
Код можно найти здесь в их истории github:
https://github.com/cleancoders/CleanCodeCaseStudy/tree/187e6129de85ad5d33c23ac98a7063b9b35720c5
Имя коммита "эпизод 6 с 3 помидорами"
Я использую OSX 10.13.6
с Java 1.8
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
С IntelliJ Community Edition 2018.2.4
Так что я в значительной степени застрял сейчас, потому что они двигаются вперед на основе этого кода, а тесты просто зависают ...
Они синхронизируются на объекте службычтобы события происходили в следующем порядке:
Тестовый код, о котором идет речь:
@Test
public void canSendAndReceiveData() throws Exception {
server.start();
Socket s = new Socket("localhost", port);
OutputStream os = s.getOutputStream();
os.write("hello\n".getBytes());
synchronized(readingService) {
readingService.wait();
}
server.stop();
assertEquals("hello", readingService.message);
}
}
Затем внутри службы они вызывают 'notify ()', чтобы освободить ожидающий поток, но он никогдаменя выпустят ...
public static abstract class TestSocketService implements SocketService {
public void serve(Socket s) {
try {
doService(s);
synchronized(this) { notify(); }
s.close();
} catch(IOException e) {
e.printStackTrace();
}
}
Я очень застрял ... поэтому любая помощь будет оценена.
Спасибо!
Дополнительное примечание:
Если я загружаю готовый проект, у него возникает та же проблемаясно, что учебник не работает с этой ошибкой ...
https://github.com/cleancoders/CleanCodeCaseStudy
Обновление
Я нашел компьютер с Windows и установил его там, и это не показывает эту проблему.Так что теперь я могу сделать вывод, что это как-то связано с этим Mac, который я использую.Это очень быстро:
2.3 GHz Intel Core i5
8 GB 2133 MHz LPDDR3
Может быть, удалось выявить проблему, потому что другие компьютеры работают медленнее, или, может быть, это связано с версией Java, в любом случае, я могу продолжить, не блокируя,Я собираюсь изменить название, чтобы отразить это.