百人牛牛棋牌

您好,迎接脱离[百人牛牛棋牌-牛牛娱乐棋牌赢现金]浏览室  笑话大全  编程问答  问答大全  移夷易近之家  文娱之家  范文之家  源码下载  电子书籍  软件下载  专题
ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
以后职位:百人牛牛棋牌 >> 群集编程 >> 其他编程教程 >> 多线程义务盘算

多线程义务盘算

泉源:群集整理     时间:2018-11-01     要害词:

本篇文章主要简介了" 多线程义务盘算",主要触及到方面的内容,关于其他编程教程感兴趣的同砚可以参考一下: 比来在研究多线程义务盘算可以有前往值,以是写了一个质朴多线程义务盘算的demo,代码以下:package thread;import java.util.Arr...

比来在研究多线程义务盘算可以有前往值,以是写了一个质朴多线程义务盘算的demo,代码以下:

package thread;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
 
public class DuoRenWuJiSuanTest {
    
    public static void main(String[] args) throws Exception {
    	long startTime = System.currentTimeMillis();
        // 培植义务荟萃
        List<FutureTask<Integer>> taskList = new ArrayList<FutureTask<Integer>>();
        // 培植线程池
        ExecutorService exec = Executors.newFixedThreadPool(5);
        for (int i = 0; i < 10; i++) {
            // 传入Callable工具培植FutureTask工具
            FutureTask<Integer> ft = new FutureTask<Integer>(new ComputeTask(i+""));
            taskList.add(ft);
            // 提交给线程池推行义务,也能够或许经由历程exec.invokeAll(taskList)一次性提交所有义务;
            exec.submit(ft);
        }
        
        System.out.println("所有盘算义务提交终了, 主线程接着干其他使命!");
 
        // 泉源统计各盘算线程盘算效果
        Integer totalResult = 0;
        for (FutureTask<Integer> ft : taskList) {
            try {
                //FutureTask的get措施会自动壅闭,直到取得盘算效果为止
                totalResult = totalResult + ft.get();
//                totalResult = totalResult + ft.get(1000,TimeUnit.MILLISECONDS);//期待一秒取得效果,子线程没有推行完则抛出异常
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }
        long endTime = System.currentTimeMillis();
        // 关闭线程池
        exec.shutdown();
        System.out.println("多义务盘算后的总效果是:" + totalResult+";话费时间:"+(endTime-startTime));
 
    }
}

class ComputeTask implements Callable<Integer> {
	 
    private Integer result = 0;
    private String taskName = "";
    
    public ComputeTask(String taskName){
        this.taskName = taskName;
        System.out.println("天生子线程盘算义务: "+taskName);
    }
    
    public String getTaskName(){
        return this.taskName;
    }
    
    @Override
    public Integer call() throws Exception {
        for (int i = 1; i <= 100; i++) {
            result += i;
        }
        // 休眠5秒钟,不雅不雅察主线程行动,预期的效果是主线程会一连推行,到要取得FutureTask的效果是期待直至完成。
        Thread.sleep(new Random().nextInt(5000));
        System.out.println(Thread.currentThread().getName()+"子线程盘算义务: "+getTaskName()+" 推行完成!");
        return result;
    }
}

 代码的焦点就是培植List<FutureTask<Integer>> 阻拦线程义务的盘算效果的吸收。然后再循环应用futureTask.get()措施来阻拦效果的取得。要重视的是get措施会壅闭主线程,以是主线程会期待所有线程的盘算效果完成以后在阻拦求和处置赏罚赏罚。一定要重视的是 FutureTask是Future接口的完成类

以上就简介了 多线程义务盘算,网罗了方面的内容,欲望对其他编程教程有兴趣的同伙有所赞助。

本文网址链接:http://dynatize.com/article/detail_4596257.html

百人牛牛棋牌

相关图片

相关文章

鑫乐棋牌-鑫乐棋牌游戏-鑫乐棋牌乐游网 JDB老虎机-jdb老虎机游戏 AQP捕鱼-金蟾捕鱼-千炮捕鱼下现金手游 通比牛牛棋牌-牛牛棋牌真人提现 AG捕鱼王-捕鱼王3D网页版-红包捕鱼游戏手游 亲朋棋牌-亲朋棋牌游戏-亲朋棋牌手游版 网上手游-网上手游棋牌-网上手游app注册 彩票幸运飞艇-幸运飞艇计划网页版 分分快三计划软件-分分快三计划网页版 二八杠棋牌-二八杠真人棋牌-二八杠棋牌游戏