您的位置:首页 > 文旅 > 旅游 > 上海工商企业查询网_辽宁省建设工程信息网a类业绩_微信软文是什么_商丘seo排名

上海工商企业查询网_辽宁省建设工程信息网a类业绩_微信软文是什么_商丘seo排名

2024/10/6 1:30:14 来源:https://blog.csdn.net/weixin_38703379/article/details/142672143  浏览:    关键词:上海工商企业查询网_辽宁省建设工程信息网a类业绩_微信软文是什么_商丘seo排名
上海工商企业查询网_辽宁省建设工程信息网a类业绩_微信软文是什么_商丘seo排名

一、CountDownlatch(多线程通信计数器实现多个线程的协同工作)

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class CountDownLatchTest {public static void main(String[] args) {ExecutorService executor = Executors.newFixedThreadPool(3);CountDownLatch count = new CountDownLatch(3);executor.execute(() -> {try {findBy三方();} catch (InterruptedException e) {throw new RuntimeException(e);}count.countDown();});executor.execute(() -> {try {findByMySQL();} catch (InterruptedException e) {throw new RuntimeException(e);}count.countDown();});executor.execute(() -> {try {findBy服务();} catch (InterruptedException e) {throw new RuntimeException(e);}count.countDown();});try {count.await();System.out.println("汇总结束");} catch (InterruptedException e) {throw new RuntimeException(e);}}public static void findBy三方() throws InterruptedException {Thread.sleep(700);}public static void findByMySQL() throws InterruptedException {Thread.sleep(200);}public static void findBy服务() throws InterruptedException {Thread.sleep(300);}
}

二、CyclicBarrier(与CountDownlatch不同的是可以重复使用)

import java.util.concurrent.*;public class CyclicBarrierTest {public static void main(String[] args) {ExecutorService executor = Executors.newFixedThreadPool(3);CyclicBarrier cyclicBarrier = new CyclicBarrier(3, () -> {System.out.println("汇总完毕");});executor.execute(() -> {try {findBy三方();cyclicBarrier.await();} catch (InterruptedException | BrokenBarrierException e) {throw new RuntimeException(e);}});executor.execute(() -> {try {findByMySQL();cyclicBarrier.await();} catch (InterruptedException | BrokenBarrierException e) {throw new RuntimeException(e);}});executor.execute(() -> {try {findBy服务();cyclicBarrier.await();} catch (InterruptedException | BrokenBarrierException e) {throw new RuntimeException(e);}});cyclicBarrier.reset();}public static void findBy三方() throws InterruptedException {Thread.sleep(700);System.out.println("查询完三方");}public static void findByMySQL() throws InterruptedException {Thread.sleep(200);System.out.println("查询完MySQL");}public static void findBy服务() throws InterruptedException {Thread.sleep(300);System.out.println("查询完b服务");}
}

三、Semaphore(信号量,控制线程执行的数量)

import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;public class SemaphoreTest {public static void main(String[] args) {Semaphore sem = new Semaphore(2);for (int i = 0; i < 3; i++) {new Thread(() -> {try {sem.acquire();System.out.println(Thread.currentThread() + "I get it");TimeUnit.SECONDS.sleep(3);System.out.println(Thread.currentThread() + "I release it");} catch (InterruptedException e) {throw new RuntimeException(e);} finally {sem.release();}}).start();}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com