JAVA并行框架(Fork/Join)和并发工具类

Fork/Join:JAVA的并行框架,一个大任务划分成多个小任务(个人理解相当于分治的思想),其执行的类要实现ForkJoinTask接口下的实现类(RecursiveTask<V>/RecursiveAction),在执行该类的时候需要使用ForkJoinPool来执行,其中的invoke方法是同步方法,execute是异步方法,调用task的join()获取到结果。其使用UNSAFE类来完成线程安全

CountDownLatch:很多说法就是相当于发令枪,当初始化的时候传入一个int的参数。该参数变为0的时候才是执行await()方法后面的代码,当执行一次countDown方法就会减去一次。该类的底层实现是内部类,该类继承了AQS来实现的线程安全

CyclicBarrier:一个可循环使用的功能类似于CountDownLatch的屏障,该类会让所有的线程都执行到屏障的时候才会一起放行所有的线程,其使用了可重入锁来实现的线程同步。该类有一个构造方法可以传入一个Runnable,该类会在所有的线程都执行完毕的时候被执行

Semaphore:一个信号量。控制某一资源被多少的线程同时拿到,其使用继承AQS的内部类完成线程安全

Exchanger:两个线程之间的数据交换,使用CAS来实现线程安全,exchange后要将返回的值覆盖旧的值。不然不会改变值

如有错误。请大家多多指正


你可能感兴趣的:(JAVA并行框架(Fork/Join)和并发工具类)