Как остановить поток, возвращающийся до вызова Join()

Это чисто теоретический вопрос, поскольку я не уверен, что условия, при которых может возникнуть эта проблема, будут обычными.

Допустим, у вас есть поток, который вы запускаете методом start:

Thread c = new Thread();
c.start();

Затем, сразу после этого, вы вызываете метод Join() на потоке, чтобы сказать методу, в котором вы находитесь, подождать, пока поток не будет выполнен, чтобы продолжить.

c.join();

Не существует ли вероятность того, что поток может быть выполнен и завершен до вызова метода join, в результате чего метод не будет знать, что он должен ждать завершения c, прежде чем продолжить выполнение? Я полагаю, что можно попробовать вызвать метод join() до вызова метода start(), но всякий раз, когда я пытался сделать это в тестовых примерах, возникала ошибка.

Кто-нибудь знает возможное решение этой проблемы, или JVM сама справляется с этим? Как я уже сказал, мне не удалось вызвать подобную ситуацию, но теоретически это возможно...

7
задан user898465 9 February 2012 в 14:56
поделиться