最近做项目需要实现线程堵塞等待另一个线程的计算结果,
如果是 golang,可以用 channel,但是 java 好像没有对应的类?所以只能用个 blokingQueue 来实现。。。
感觉 java 应该有这种实现类,可能我找不到。。。
|  |      1asAnotherJack      2020-05-15 10:47:23 +08:00 只是实现阻塞线程的话,用 countdownLatch 、wait notify 、甚至锁都可以 | 
|      2coolmenu      2020-05-15 10:49:23 +08:00 如果就是楼主的需求,java 配套设施足够用了。 | 
|      3AmmeLid      2020-05-15 10:50:13 +08:00 java.util.concurrent.Exchanger 应该找的是这个吧,用起来肯定是没有 golang 那么优雅 | 
|  |      4anteros      2020-05-15 10:54:26 +08:00 这两个不一样的吧。 据我了解,一个是将数据上锁保证安全,一个是数据本身就是安全的,通过传递数据来达到数据共用的。 | 
|  |      5gejun123456      2020-05-15 11:02:47 +08:00 、thread.join 包个对象进去或者用线程池 Callable | 
|      6AmmeLid      2020-05-15 11:13:51 +08:00 #3 如果是单纯的生产者消费者模型,可以直接用 java.util.concurrent.SynchronousQueue | 
|  |      7pursuer      2020-05-15 11:33:09 +08:00 如果只是等待线程计算结果,用 Future 就够了,BlockingQueue 都麻烦了 | 
|  |      8NeinChn      2020-05-15 22:46:55 +08:00 +1,一般来说除了特殊场景,直接拿 future 多简单,还要加塞个 blocking queue 多麻烦 Future<T> future = CompletableFuture.supplyAsync(() -> T); //blahblah T returnObject = future.get(timeout); 多简单的事情,连 channel 这种概念都用不到. |