多线程的第三种实现方式
来源:互联网 发布:八叉树算法详解 编辑:程序博客网 时间:2024/05/29 19:52
1.实现步骤
1)创建一个线程池
2)在线程池的submit方法中传入Callable对象,然后该方法会返回一个Future的对象。
3)Future的get()方法即可获得线程中的返回值。
这种多线程会阻塞主线程的,既然会阻塞主线程,那我为什么要再开一个线程去执行呢,还不如直接在主线程执行就好。但是这种是局限于在一个线程时,如果需要同时执行多个线程,等待多个线程返回结果时,在主线程中是不能实现这种功能的。
import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class DateFormat { public static void main(String[] args) { System.out.println("----program start----"); List<Future<String>> list = new ArrayList<Future<String>>(); ExecutorService pool = Executors.newFixedThreadPool(2); Future<String> future1 = pool.submit(new MyCallable("A")); list.add(future1); Future<String> future2 = pool.submit(new MyCallable("B")); list.add(future2); try { for (Future<String> future : list) { System.out.println(future.get()); } } catch (Exception e) { e.printStackTrace(); } System.out.println("-----program end----"); }}class MyCallable implements Callable<String> { private String string; public MyCallable(String string) { this.string = string; } @Override public String call() throws Exception { Thread.sleep(2000); //让子线程休眠2秒,会发现子线程会阻塞主线程。 return string + "===>" + Thread.currentThread().toString(); }}
阅读全文
0 0
- 多线程的第三种实现方式
- 线程池(实现多线程的第三种方式)
- 多线程第三种方式 Calls 实现
- 【我的Java笔记】多线程_多线程实现的第三种方式(线程池)
- 多线程的实现方式
- 多线程的实现方式
- 多线程的实现方式
- 多线程的实现方式
- Java实现多线程的两种方式
- 实现多线程的两种方式
- iOS 多线程的几种实现方式
- JavaLearning:多线程的两种实现方式
- JAVA多线程实现的三种方式
- Java多线程实现的三种方式
- Java实现多线程的两种方式
- 多线程的两种实现方式
- JAVA多线程实现的三种方式
- JAVA多线程实现的三种方式
- Leetcode解题笔记 1.Two Sum [Easy]
- 实现-超级课程表——校园登录(2)
- Maven阿里云仓库地址配置
- java--依赖、关联、聚合和组合之间区别的理解
- 什么是AAC音频格式 AAC-LC 和 AAC-HE的区别是什么
- 多线程的第三种实现方式
- inclue指令 jsp动作与jsp指令区别
- java单例模式
- 显示测量和土木工学12d.Model.v9.0.C1d地表
- 繁体简体互转类
- Test1 温度表
- Docker vs. PrivateTmp
- 合并两个已排序的数组
- 插入排序