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新增两个线程创建方法的更多相关文章

  1. 创建线程的方式三:实现Callable接口-----JDK5.0 新增

    package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...

  2. Thread之六:线程创建方法

    1.继承Thread类,重写该类的run()方法. 2.实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thr ...

  3. Day07 jdk5.0新特性&Junit&反射

    day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装M ...

  4. Linux线程-创建

    Linux的线程实现是在内核以外来实现的,内核本身并不提供线程创建.但是内核为提供线程[也就是轻量级进程]提供了两个系统调用__clone()和fork (),这两个系统调用都为准备一些参数,最终都用 ...

  5. Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解

    1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...

  6. java_线程创建的两种方法

    线程创建的方法有两种: 一 继承Thread类: public class ThreadTest { public static void main(String[] args) { //4)在mai ...

  7. 创建线程的方式三:实现Callable接口 --- JDK 5.0新增

    /** * 创建线程的方式三:实现Callable接口. --- JDK 5.0新增 * * * 如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大? * 1 ...

  8. 一个类,有新增元素(add)和获取元素数量(size)方法。 启动两个线程。线程1向容器中新增数据。线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止

    方式一: /** * 两个线程要是可见的所以要加上votalile */public class Test_01 { public static void main(String[] args) { ...

  9. JDK 5.0 新增解决线程安全 Callable接口和线程池

    在jdk5.0后又新增了两种解决线程安全的问题 一: 实现Callable接口, 实现接口步骤: 1: 创建一个实现Callable接口的实现类 2: 实现Callable接口中的call()方法, ...

随机推荐

  1. linux 下使用exp/imp 或者expdp/impdp导出导入oracle数据表数据

    一.环境配置 1.执行环境: exp/imp可以在客户端执行也可以在服务器端执行,在客户端执行需要先安装有oracle的客户端,如果是linux系统,就是以oracle用户登录,在控制台下执行.建议在 ...

  2. gunicorn部署Flask服务

    作为一个Python选手,工作中需要的一些服务接口一般会用Flask来开发. Flask非常容易上手,它自带的app.run(host="0.0.0.0", port=7001)用 ...

  3. sass 安装与各种命令

    css 是一种编程语言,可以用来开发网页样式,但是却不能编程,没有变量,没有条件语句,于是就有了“css预处理器”, 它的原理就是:利用编程语言进行网页样式设计,然后再编译成正常的css文件: sas ...

  4. Java使用动态代理实现AOP

    参考资料: http://www.importnew.com/15420.htmlhttp://www.cnblogs.com/techyc/p/3455950.html Spring是借助了动态代理 ...

  5. Android buffer_handle_t的定义(转载)

    转自:http://www.cnblogs.com/eustoma/archive/2012/06/08/2541416.html 1. buffer_handle_t 文件位置:system\cor ...

  6. Mac下Ruby升级与Rails的安装

    也是醉了,网上查了半天一脸懵逼.然后自己动手试试 gem install rails瞬间命令行就没反应了,以为命令行挂了,但是一会儿报错说是没有权限. 好吧,那么来这个 sudo gem instal ...

  7. 算法复习周------“动态规划之‘最长公共子序列’”&&《计蒜课》---最长公共子串题解

    问题描述: 这个问题其实很容易理解.就是给你两个序列X={x1,x2,x3......xm} Y={y1,y2,y3......ym},要求找出X和Y的一个最长的公共子序列. 例:Xi={A, B, ...

  8. POJ3682;King Arthur's Birthday Celebration(期望)

    传送门 题意 进行翻硬币实验,若k次向上则结束,进行第n次实验需花费2*n-1的费用,询问期望结束次数及期望结束费用 分析 我们令f[i]为结束概率 \[f[i]=C_{i-1}^{k-1}*p^k* ...

  9. php pdo操作数据库

    POD扩展是在PHP5中加入,该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题. PDO的特点: 性能.PDO 从一开始就吸取了现有数据库扩展成 ...

  10. CSS ul li a 背景图片与文字对齐

    <div class="four"> <h2>电子商务</h2> <img src="images/photo2.gif&quo ...