Java线程池(Callable+Future模式)
转:
Java线程池(Callable+Future模式)

public class chuju implements Callable<Boolean>{
    @Override
    public Boolean call() throws Exception {
        try{
            System.out.println("买厨具");
            Thread.sleep(3000);
            System.out.println("买好厨具");
        }catch (InterruptedException e){
            e.printStackTrace();
        }
        return true;
    }
}


public class shicai implements Callable<Boolean>{
    @Override
    public Boolean call() throws Exception {
        try{
            System.out.println("买食材");
            Thread.sleep(1000);
            System.out.println("买好食材");
        }catch(InterruptedException e){
            e.printStackTrace();
        }
        return true;
    }
}


public class zuofan implements Callable<Boolean>{
    @Override
    public Boolean call() throws Exception {
        try{
            System.out.println("做饭");
            Thread.sleep(5000);
            System.out.println("做好饭");
        }catch (InterruptedException e){
            e.printStackTrace();
        }
        return true;
    }
}


public class Main {
    public static void main(String[] args) {
        ExecutorService es = Executors.newCachedThreadPool();
        chuju cj = new chuju();
        shicai sc = new shicai();
        Future<Boolean> f1 = es.submit(cj);
        Future<Boolean> f2 = es.submit(sc);
        try{
            Boolean b1 = f1.get();//会阻塞当前线程
            Boolean b2 = f2.get();
            System.out.println(b1);
            System.out.println(b2);
            if(b1 && b2){
                zuofan zf = new zuofan();
                es.submit(zf);
            }
        }catch(InterruptedException e){
            e.printStackTrace();
        }catch (ExecutionException e){
            e.printStackTrace();
        }
        es.shutdown();
    }
}

Java线程池(Callable+Future模式)的更多相关文章
- 【Java线程】Callable和Future
		Future模式 Future接口是Java线程Future模式的实现,可以来进行异步计算. Future模式可以这样来描述: 我有一个任务,提交给了Future,Future替我完成这个任务.期间我 ... 
- JAVA 线程池之Callable返回结果
		本文介绍如何向线程池提交任务,并获得任务的执行结果.然后模拟 线程池中的线程在执行任务的过程中抛出异常时,该如何处理. 一,执行具体任务的线程类 要想 获得 线程的执行结果,需实现Callable接口 ... 
- Java多线程编程中Future模式的详解
		Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ... 
- Java多线程编程中Future模式的详解<转>
		Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ... 
- Netty核心概念(7)之Java线程池
		1.前言 本章本来要讲解Netty的线程模型的,但是由于其是基于Java线程池设计而封装的,所以我们先详细学习一下Java中的线程池的设计.之前也说过Netty5被放弃的原因之一就是forkjoin结 ... 
- 深入理解Java线程池:ScheduledThreadPoolExecutor
		介绍 自JDK1.5开始,JDK提供了ScheduledThreadPoolExecutor类来支持周期性任务的调度.在这之前的实现需要依靠Timer和TimerTask或者其它第三方工具来完成.但T ... 
- Java线程池详解(二)
		一.前言 在总结了线程池的一些原理及实现细节之后,产出了一篇文章:Java线程池详解(一),后面的(一)是在本文出现之后加上的,而本文就成了(二).因为在写完第一篇关于java线程池的文章之后,越发觉 ... 
- Java线程池使用和源码分析
		1.为什么使用线程池 在多线程编程中一项很重要的功能就是执行任务,而执行任务的方式有很多种,为什么一定需要使用线程池呢?下面我们使用Socket编程处理请求的功能,分别对每种执行任务的方式进行分析. ... 
- 【转载】深度解读 java 线程池设计思想及源码实现
		总览 开篇来一些废话.下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) ... 
随机推荐
- 初级文件IO——若干种文件共享操作 如何影响 文件文件描述符表
			同一进程共享操作相同的文件 在同一个进程中多次open打开同一文件时,文件描述符可能会相同吗? 答:不可能.在同一进程里面,一旦某个文件描述符被用了,在close释放之前,别人不可能使用,所以指向同一 ... 
- PendSV异常介绍、用于上下文切换
			在这里,非常感谢<cortex-cm3权威指南>的翻译者. PendSV 的典型使用场合是在上下文切换时(在不同任务之间切换). 例如, 一个系统中有两个就绪的任务,上下文切换被触发的场合 ... 
- python+selenium之——pip环境变量配置
			将pip的路径……\Python37-32\Scripts添加进Path: 而非……\Python37-32\Lib\site-packages\pip-18.1-py3.7.egg 
- BFS和DFS
			1.图的两种遍历方式 图的遍历通常有两种方式,即深度优先搜索(Depth First Search)和广度优先搜索(Breadth First Search).前者类似于树的先序遍历,而后者类似于树的 ... 
- 【换根dp】9.22小偷
			换根都不会了 题目大意 给定一棵$n$个点的树和树上一撮关键点,求到所有$m$个关键点距离的最大值$dis_{max}\le LIM$的点的个数. $n,m\le 30000,LIM\le 30000 ... 
- [NOI2016]循环之美——结论+莫比乌斯反演
			原题链接 好妙的一道神仙题 题目大意 让你求在\(k\)进制下,\(\frac{x}{y}\)(\(x\in [1,n],y\in [1,m]\))中有多少个最简分数是纯循环小数 SOLUTION 首 ... 
- Waiting (TTFB) 时间
			什么是 Waiting (TTFB) 时间 TTFB 是 Time to First Byte 的缩写,指的是浏览器开始收到服务器响应数据的时间(后台处理时间+重定向时间),是反映服务端响应速度的重要 ... 
- vue_03总结
			vue_03总结 1.组件: html.css.js的集合体 vue实例就代表组件 组件用template实例成员管理html结构,有且只有一个根标签 子组件可以复用,所以数据要组件化处理,data的 ... 
- MySQL认识索引
			什么是索引? 索引在MySQL中也叫是一种“键”,是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要.索引优化应该是对查询 ... 
- 利用ceph-deploy部署ceph存储集群
			一.环境准备 创建两台主机,ip地址和主机名如下 192.168.2.100,主机名ceph-1 192.168.2.101,主机名ceph-2 每个主机 新增加一块数据盘,分区根据自己需要分区即可, ... 
