Як щодо цього рішення?
Він не використовує клас Thread, але він одночасний, і певним чином робить саме те, що ви запитуєте
ExecutorService pool = Executors.newFixedThreadPool(2); // creates a pool of threads for the Future to draw from
Future<Integer> value = pool.submit(new Callable<Integer>() {
@Override
public Integer call() {return 2;}
});
Тепер все, що вам потрібно зробити, це сказати, value.get()
коли вам потрібно захопити своє повернене значення, потік запускається тієї самої секунди, коли ви надаєте value
значення, тому вам ніколи не доведеться threadName.start()
про це говорити .
Що Future
таке, це обіцянка програмі, ви обіцяєте програмі, що отримаєте їй необхідну вартість колись найближчим часом
Якщо ви зателефонуєте .get()
йому до того, як це буде зроблено, потік, який його викликає, просто зачекає, поки це буде зроблено