Java 父线程与子线程相互通信的方法

情况1:父线程结束,子线程跟着结束
方法:将子线程设置为父线程的守护线程即可,当主线程结束时,子线程自动结束。

情况2:父线程等子线程结束
方法1:最朴素的方法,while(子.isAlive==true) 蠢

方法2:子.join()

方法3:CountDownLatch cdl=new CountDownLatch(1);
父 cdl.await();
子 cdl.countDown();

方法4:阻塞队列 BlockingQueue queue = new ArrayBlockingQueue(1);
父 queue.take();
子 queue.put(“OK”);

方法5:Synchronized
父 wait
子 notify

方法6:CyclicBarrier barrier = new CyclicBarrier(2);
父 barrier.await();
子 barrier.await();

方法7:线程池+Feature
ExecutorService executorService = Executors.newFixedThreadPool(1);
Future future = executorService.submit(子线程);
future.get();父等待子完成
executorService.shutdown();

方法8:LockSupport
父 LockSupport.park();
子 运行完LockSupport.unpark(父线程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值