Fork/Join框架

        1.Fork/Join框架是Java 7并行执行任务的框架,是一个把大任务分割成若干个小任务,每个小任务结果后得到大任务结果的框架

        2.工作窃取算法:是指某个线程从其他队列里窃取任务来执行

        3.工作窃取算法的优点:充分利用线程进行并行计算,减少了线程间的竞争。

           工作窃取算法的缺点:在某些情况下还是存在竞争,比如双端队列里只有一个任务时。并且该算法会消耗了更多的系统资源。

        4.

        步骤1 分割任务。首先我们需要有一个fork类来把大任务分割成子任务,有可能子任务还是很大,所以还需要不停地分割,直到分割出的子任务足够小。

        步骤2 执行任务并合并结果。分割的子任务分别放在双端队列里,然后几个启动线程分别从双端队列里获取任务执行。子任务执行完的结果都统一放在一个队列里,启动一个线程从队列里拿数据,然后合并这些数据。

        5.可以继承的类

                RecursiveAction:用于没有返回结果的任务。

                · RecursiveTask:用于有返回结果的任务

         6.循环的方法compute()注意写跳出条件

        7.拆分和合并的方法

                // 执行子任务

                对象.fork();

                对象.fork();

                // 等待子任务执行完,并得到其结果

                int m=对象.join();

                int n=对象.join()

                8.ForkJoinTask提供了isCompletedAbnormally()方法来检查任务是否已经抛出异常或已经被取消了,通过ForkJoinTask的getException方法获取异常。getException方法返回Throwable对象,如果任务被取消了则返回CancellationException。任务没有完成或者没有抛出异常则返回null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值