jdk5.0新增两个线程创建方法
1.实现callable接口
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class callableTest implements Callable { @Override public Object call() throws Exception { int num = 0; for (int i = 0; i <= 100; i++) { System.out.println(i); num+=i; } return num; } } class Test{ public static void main(String[] args) throws ExecutionException, InterruptedException { callableTest callableTest = new callableTest(); //使用Futre的唯一实现类FutureTask传入callable类型对象 FutureTask futureTask = new FutureTask(callableTest); //使用thread启动线程 Thread thread = new Thread(futureTask); thread.start(); //使用get方法获取返回值,必须处理上级抛出异常 Object o = futureTask.get(); System.out.println(o); } }
2.使用线程池
Executable创建
newCachedThreadPool() 创建一个可根据需要创建新线程的线程池
newFixedThreadPool(n) 创建一个可重用固定线程数的线程池
newSinhleThreadExecutor() 创建一个只有一个线程的线程池
newSchedulecThreadPool() 创建一个线程池,它可安排在给固定延迟后运行命令或定期执行
execute 执行 适合使用于Runnable
submit 提交 适合使用于callable
shutdown 关闭连接池
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolTest implements Runnable{ @Override public void run() { for (int i = 0; i <= 100; i++) { if(i%2==0){ System.out.println(i); } } } } class Tets{ public static void main(String[] args) { //创建一个数量10的线程池 ExecutorService executorService = Executors.newFixedThreadPool(10); //创建线程实现对象 ThreadPoolTest threadPoolTest = new ThreadPoolTest(); //执行线程 executorService.execute(threadPoolTest); //关闭连线池 executorService.shutdown(); } }
corePoolSize 核心池大小
maximumPoolSize 最大线程数
KeepAliveTime 线程没有任务时最多保持多长时间后会终止
可是使用ThreadPoolExecutor类型强转使用方法
jdk5.0新增两个线程创建方法的更多相关文章
- 创建线程的方式三:实现Callable接口-----JDK5.0 新增
package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...
- Thread之六:线程创建方法
1.继承Thread类,重写该类的run()方法. 2.实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thr ...
- Day07 jdk5.0新特性&Junit&反射
day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装M ...
- Linux线程-创建
Linux的线程实现是在内核以外来实现的,内核本身并不提供线程创建.但是内核为提供线程[也就是轻量级进程]提供了两个系统调用__clone()和fork (),这两个系统调用都为准备一些参数,最终都用 ...
- Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解
1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...
- java_线程创建的两种方法
线程创建的方法有两种: 一 继承Thread类: public class ThreadTest { public static void main(String[] args) { //4)在mai ...
- 创建线程的方式三:实现Callable接口 --- JDK 5.0新增
/** * 创建线程的方式三:实现Callable接口. --- JDK 5.0新增 * * * 如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大? * 1 ...
- 一个类,有新增元素(add)和获取元素数量(size)方法。 启动两个线程。线程1向容器中新增数据。线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止
方式一: /** * 两个线程要是可见的所以要加上votalile */public class Test_01 { public static void main(String[] args) { ...
- JDK 5.0 新增解决线程安全 Callable接口和线程池
在jdk5.0后又新增了两种解决线程安全的问题 一: 实现Callable接口, 实现接口步骤: 1: 创建一个实现Callable接口的实现类 2: 实现Callable接口中的call()方法, ...
随机推荐
- python dig trace 功能实现——通过Querying name server IP来判定是否为dns tunnel
dns tunnel确认方法,查询子域名最终的解析地址: 使用方法:python dig_trace.py "<7cf1e56b 67fc90f8 caaae86e 0787e907 ...
- 如何正确使用log4j
如何正确使用log4j? 关键字: 如何正确使用log4j? Java Web开发的过程中,通过会采用输出log的方式来进行调试,产品上线之后,也通常使用log来记录系统的运行状态.最简单的输出l ...
- I.MX6 mkuserimg.sh 使用
/*********************************************************************** * I.MX6 mkuserimg.sh 使用 * 说 ...
- Ruby Numeric类
Numeric类 Numeric ---------> Integer ---------> Fixnum ...
- Android项目通过Android Debug Database实时查看本地Sqlite数据库内容
前几天写Android项目时,想和Sqlyog那样图形化查看数据库中的文件,由于Android自带小型的Sqlite轻量级数据库,在查找方法时发现了一个特别简单适用的方法,纪录一下. 在android ...
- 如何快捷安装并配置MySQL 下载破解Navicat for mysql
首先,要先下载MySQL,进官网下载相应的mysql版本,这个不收费,实在不知道的可以参考一下这篇:https://blog.csdn.net/qq_37172528/article/details/ ...
- 初学Linux应该注意的事项
相比于windows linux严格区分大小写 linux所有内容都是以文件形式保存 linux不靠扩展名区分文件类型(靠权限),linux下文件扩展名主要是方便管理员分类 linux所有的存储设备都 ...
- [POI2007]大都市meg
Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1..n ...
- [ZPG TEST 105] 扑克游戏【Huffman】
扑克游戏 (poker) 题目描述: 有一棵无穷大的满二叉树,根为star,其余所有点的权值为点到根的距离,如图: 现在你有一些扑克牌,点数从1到13,你要把这些扑克牌全部放到这个树上: 当你把点数为 ...
- 配置Ubuntu16.04第01步:U盘安装 Ubuntu 16.04系统
Ubuntu 每年发布两个版本,Ubuntu 16.04 开发代号为“Xenial Xerus”,为第六个长期支持(LTS)版本. 1. 制作U盘系统安装盘 1.1下载最新的Universal USB ...