java并发编程--get超时处理以及cancle方法的使用
#注意代码上面的注释
import java.util.concurrent.*;/*** @创建人 xiaoshi* @创建时间 2020/4/11* @描述 练习get超时,以及cancle方法的使用。可知,在future调用处,捕捉超时异常后,可使用cancle方法* 来对线程进行管理,将其关闭,传入的参数为:是否跑完线程,如果传入为false,那么线程将直接中断,连异常都没有去* 捕获处理;如果传入为true,就可以执行异常捕获里的代码*/
public class Timeout {static class Ad {private String name;Ad(){}Ad(String name){this.name = name;}@Overridepublic String toString() {return "Ad{" +"name='" + name + '\'' +'}';}}static class myTask implements Callable<Ad>{@Overridepublic Ad call() throws Exception {try {Thread.sleep(3000);}catch (InterruptedException e){System.out.println("线程被中断");}return new Ad("正常获取的广告");}}public static void main(String[] args) {FutureTask<Ad> taskFutureTask = new FutureTask<Ad>(new myTask());ExecutorService service = Executors.newFixedThreadPool(2);try {service.submit(taskFutureTask);System.out.println(taskFutureTask.get(2,TimeUnit.SECONDS));} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}catch (TimeoutException e){System.out.println("超时");//取消线程的执行taskFutureTask.cancel(true);}finally {service.shutdown();}}}
cancle为true时:
cancle为false时:
java并发编程--get超时处理以及cancle方法的使用相关推荐
- Java并发编程笔记(1)基础知识
Java并发编程的三个性质 原子性 *在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行. *只有形如x = 10这种不可再分的赋值操作才有 ...
- Java并发编程71道面试题及答案
Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...
- Java并发编程题库
文章目录 并发编程三要素? 实现可见性的方法有哪些? 创建线程的有哪些方式? 创建线程的三种方式的对比? Runnable 和 Callable 的区别 Java线程具有五中基本状态 什么是线程池?有 ...
- [Java并发编程(一)] 线程池 FixedThreadPool vs CachedThreadPool ...
[Java并发编程(一)] 线程池 FixedThreadPool vs CachedThreadPool ... 摘要 介绍 Java 并发包里的几个主要 ExecutorService . 正文 ...
- Java并发编程:线程的生命周期是个怎样的过程?
前言 在日常开发过程中,如果我们需要执行一些比较耗时的程序的话,一般来说都是开启一个新线程,把耗时的代码放在线程里,然后开启线程执行.但线程是会耗费系统资源的,如果有多个线程同时运行,互相之间抢占系统 ...
- Java并发编程,无锁CAS与Unsafe类及其并发包Atomic
为什么80%的码农都做不了架构师?>>> 我们曾经详谈过有锁并发的典型代表synchronized关键字,通过该关键字可以控制并发执行过程中有且只有一个线程可以访问共享资源,其 ...
- Java 并发编程——Executor框架和线程池原理
Java 并发编程系列文章 Java 并发基础--线程安全性 Java 并发编程--Callable+Future+FutureTask java 并发编程--Thread 源码重新学习 java并发 ...
- 【Java 并发编程】CountDownLatch 简介
文章目录 I CountDownLatch 概念 II CountDownLatch 使用流程 III CountDownLatch API 简介 I CountDownLatch 概念 1. 概念 ...
- Java并发编程75道面试题及答案
1.在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User).任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bo ...
最新文章
- [你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考
- 教你学习快速排序算法-程序员必备哦
- mybatis 配置
- 16年微软/腾讯云/华为云MVP是怎样炼成的
- 使用负边距创建自适应宽度的流体布局
- Windows Terminal Preview 1909 发布
- spring boot jpa的一对一关联(简洁)
- php中的加密解密模块-mcrypt
- python爬虫下载文件到指定文件夹_python - 图片爬虫时候遇到问题 urllib.request.urlretrieve 下载到指定文件夹不成功?...
- java冰箱评测开题报告范文_智能电冰箱控制的设计开题报告.doc
- DataStory创始人兼CEO徐亚波博士获年度青年创业榜样奖项
- excel入门,如何玩转excel,你早该这么玩Excel笔记12
- 安徽大学计算机专业全国大学排名,2017安徽大学优势专业排名
- 红米k50至尊版和小米12spro区别 哪个好
- P1199(NOIP2010 普及组)三国游戏 题解
- 序幕(计算机基础知识)
- 对东方财经个股资金流的爬取分析
- Python之程序交互
- 实现BPS组织机构数据权限分离解决方案
- Angularjs树形结构
热门文章
- 数学建模——存贮模型
- C/C++ - 基本数据类型(默认:32位操作系统)
- php文章重复度检测,百度如何判断网页文章的重复度?两个页面相似度确认方法介绍...
- python闹钟界面源码_Python编程练习:简单的闹钟提醒
- ROS在MATLAB中的使用笔记
- shopee代运营公司分享—shopee站内引流的5种方式,解决店铺没流量没订单
- Spring Resources
- CSS中::after和:after的区别
- 苹果6屏幕多大_Apple Watch S5 现场上手:「不熄灭」的屏幕用起来怎么样?
- 全新蒙迪欧主推2.3 定价将为18.98-22.98万