`
lizhensan
  • 浏览: 369609 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JDK自带的多线程API的简单例子

    博客分类:
  • java
 
阅读更多
package cn.sunline.ant.task.concurrent;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Test {

	public static void main(String[] args) {
		// 执行的服务
		ExecutorService service = Executors.newFixedThreadPool(4);
		CompletionService<Result> completion = new ExecutorCompletionService<Result>(service);//这个东西很关键
		// 每个任务的执行结果
		List<Future<Result>> futures = new ArrayList<Future<Result>>();

		// 开始并发的跑任务
		futures.add(completion.submit(new MyTask(10)));
		futures.add(completion.submit(new MyTask(1)));
		futures.add(completion.submit(new MyTask(5)));

		for (int i = 0; i < 3; i++) {
			try {
				// 这里会阻塞等待任务完成
				Result result = completion.take().get();
				System.out.println(result.msg);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		//这里的顺序与任务请求的顺序不一定相同,具体要看每个任务的执行速度
		for (Future<Result> f : futures) {
			try {
				// 这里会阻塞等待任务完成
				Result result = f.get();
				System.out.println(result.msg);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}

	static class Result {
		String msg;
	}

	static class MyTask implements java.util.concurrent.Callable<Result> {
		int id;

		public MyTask(int id) {
			this.id = id;
		}

		@Override
		public Result call() throws Exception {
			Result ret = new Result();
			ret.msg = "处理任务:" + id;
			Thread.sleep(id * 1000);
			return ret;
		}
	}

}

 

分享到:
评论

相关推荐

    JDK7多线程部分类(接口)关系图

    JDK7多线程部分类(接口)关系图,根据官网得出

    jdk1.9英文版API

    jdk1.9英文版API,小部分内容可能需要联网才能看到,大部分基础都是可以直接查看的。

    JDK5 多线程新特性

    对java多线程进行了全面的总结,包括了JDK 5的新特性。

    JDK1.7中文版API

    建议官方只收1积分,汉化绝大多数方法与函数只有少数1.7少用方法没有汉化,并含使用案例,jdk api 1.7是一款JAVA1.7中文版的API帮助文档,众所周知JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的...

    利用jdk自带算法实现的AES加解密

    利用jdk自带算法实现的AES加解密工具类及Base64编解码工具类、 文件操作工具类、aes扩展无限制权限策略文件等。 在jdk1.7环境亲测通过。

    Java jdk-11中文api修订版.CHM.zip

    Java jdk-11中文api修订版.CHM。 jdk11的api中文版。修正了js的错误,不需要下载Extrachm来打开查看。对里面布局做了修改完善,手工补充了部分没有翻译到的地方。当然了版本不是很完善,可以去下面链接看源码,自己...

    JDK 1.8中文API文档

    JDK 1.8中文API文档

    jdk8中文API文档

    jdk8中文API文档

    jdk-11中文api修订版.zip

    jdk11的api中文版。修正了js的错误,不需要下载Extrachm来打开查看。对里面布局做了修改完善,手工补充了部分没有翻译到的地方。当然了版本不是很完善,可以去看源码,自己修改编译。 Java 11 不仅提供了长期支持...

    jdk_api_1.8-JAVA中文版API手册

    本手册为JDK-API-1.8版本,java中文版api手册。JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具...

    jdk_api_1.8中文版

    jdk api 1.8 中文版,用于平时查阅java自带的类或者命令。jdk api 1.8 中文版,用于平时查阅java自带的类或者命令。jdk api 1.8 中文版,用于平时查阅java自带的类或者命令。jdk api 1.8 中文版,用于平时查阅java...

    JDK API 1.8 中文

    JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 ...

    JDK1.8和JDK1.6API帮助文档

    JDK1.8和JDK1.6API帮助文档

    jdk_9_API文档

    java开发API文档,jdk-9文档压缩包,解压之后浏览器打开即可

    JDK_API_1.8(中文版)JDK_API_1_8_zh_CN.zip

    JDK_API_1.8(中文版)JDK_API_1_8_zh_CN.zip

    JDK7api JDKAPI

    JDK7u4的API,JDK7的帮助文档

    jdk-11中文api文档

    1.新手查询语法必备 2.jdk最新的中文文档

    JDK自带xml解析器dom+sax

    JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax

    JDK自带多线程工具包详解

    由浅入深,通过图解和手写代码,讲解Java版的多线程,主要讲解如下内容: ...JDK多线程工具包中,若干种工具的原理和手写实现: ReentrantLock、CountDownLanuh、CyclicBarrier、Semaphore      

    JDK自带的日志包简单应用

    NULL 博文链接:https://samjavaeye.iteye.com/blog/938657

Global site tag (gtag.js) - Google Analytics