Это чисто теоретический вопрос, поскольку я не уверен, что условия, при которых может возникнуть эта проблема, будут обычными.
Допустим, у вас есть поток, который вы запускаете методом start:
Thread c = new Thread();
c.start();
Затем, сразу после этого, вы вызываете метод Join() на потоке, чтобы сказать методу, в котором вы находитесь, подождать, пока поток не будет выполнен, чтобы продолжить.
c.join();
Не существует ли вероятность того, что поток может быть выполнен и завершен до вызова метода join, в результате чего метод не будет знать, что он должен ждать завершения c, прежде чем продолжить выполнение? Я полагаю, что можно попробовать вызвать метод join() до вызова метода start(), но всякий раз, когда я пытался сделать это в тестовых примерах, возникала ошибка.
Кто-нибудь знает возможное решение этой проблемы, или JVM сама справляется с этим? Как я уже сказал, мне не удалось вызвать подобную ситуацию, но теоретически это возможно...