使用Callable接口创建线程池

步骤:

创建线程池对象
创建 Callable 接口子类对象
提交 Callable 接口子类对象
关闭线程池
实例:

class TaskCallable implements Callable<Integer> {

@Override
public Integer call() throws Exception {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+" "+i);
}
return null;
}
}
public class ThreadPoolOfCallable {

public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(3);
TaskCallable c = new TaskCallable();
TaskCallable c1 = new TaskCallable();

//线程池中获取线程对象,调用run方法
service.submit(c);
//再获取一个
service.submit(c1);
//关闭线程池
service.shutdown();
}

}

---------------------

原文地址:https://www.cnblogs.com/liyanyan665/p/11359760.html

时间: 2024-11-10 23:16:43

使用Callable接口创建线程池的相关文章

java基础——实现Callable接口创建线程

package callable; /* 创建线程方式三:实现Callable接口 1.创建一个实现Callable的实现类 2.实现call方法,将此线程需要执行的操作声明在次方法中 3.创建Callable接口实现类的对象 4.将此对象作为参数丢到FutureTask构造器中,创建FutureTask对象 5.将FutureTask对象作为对象传递到Thread构造器中,创建Thread对象,start() 6.如果需要方法的返回值,则用futureTask.get()方法去获取 理解: 1

Callable,阻塞队列,线程池问题

一.说说Java创建多线程的方法 1. 通过继承Thread类实现run方法   2. 通过实现Runnable接口 3. 通过实现Callable接口 4. 通过线程池获取 二. 可以写一个Callable的案例吗?如何调用Callable接口 /*是一个带返回值的多线程类,如果需要有线程返回的结果,就需要使用此类*/ class MyThread implements Callable<Integer> { @Override public Integer call() { return

实现接口创建线程

一.理论 1.进程与线程 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程. 当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程. 2. 进程 几乎所有操作系统都支持进程的概念,所有运行中的任务通常对应一条进程(Process).当一个程序进入内存运行,即变成一个进程.进程是处于运行过程中的程序,并且具有一定独立功能, 进程是系统进行资源分配和调度的一个独立单位. 一般而言,进程包含如下三个特征: <1>独立性:进程是系统

Java总结(十)—实现Runnable接口创建线程,线程安全同步,死锁(哲学家进餐问题),读写锁

一.通过实现Runnable接口创建线程 定义实现Runnable接口的类 (1)Runnable接口中只有一个方法public void run();用来定义线程运行体: class MyRun implements Runnable(){ public void run(){ 线程执行的具体代码 } } (2)创建线程的实例的时候将这个类的实例作为参数传递到线程实例内部.然后再启动: Thread thread=new Thread(new MyRun()); Thread.start();

【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?

前言 上文我们介绍了JDK中的线程池框架Executor.我们知道,只要需要创建线程的情况下,即使是在单线程模式下,我们也要尽量使用Executor.即: ExecutorService fixedThreadPool = Executors.newFixedThreadPool(1); //此处不该利用Executors工具类来初始化线程池 但是,在<阿里巴巴Java开发手册>中有一条 [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方

Java多线程:实现Runnable接口创建线程方式详解

先看例子: /**实现Runnable接口创建线程步骤: * 1.创建一个实现Runnable接口的类 * 2.重写Runnable类中抽象的run()方法 * 3.创建实现类的对象 * 4.声明Thread类,同时将实现类对象作为参数传递 * 5.用Thread类的对象调用start() */ //例子:多线程售票(暂未安全同步) class MyThread implements Runnable{ private int num = 100; public void run(){ whil

高并发之——从源码角度分析创建线程池究竟有哪些方式

前言 在Java的高并发领域,线程池一直是一个绕不开的话题.有些童鞋一直在使用线程池,但是,对于如何创建线程池仅仅停留在使用Executors工具类的方式,那么,创建线程池究竟存在哪几种方式呢?就让我们一起从创建线程池的源码来深入分析究竟有哪些方式可以创建线程池. 使用Executors工具类创建线程池 在创建线程池时,初学者用的最多的就是Executors 这个工具类,而使用这个工具类创建线程池时非常简单的,不需要关注太多的线程池细节,只需要传入必要的参数即可.Executors 工具类提供了

自定义线程池,如何最佳创建线程池

java有预置线程池:newSingleThreadExecutor,newFixedThreadPool,newCacheedThreadPool,newScheduledThreadPool,newWorkStealingPool.如果不适合,还可以使用ThreadPoolExecutor创建自定义线程池.主要构造方法: 1 public ThreadPoolExecutor(int corePoolSize, 2 int maximumPoolSize, 3 long keepAliveT

Java并发编程——Executor接口及线程池的使用

在如今的程序里,单线程的程序,应该已经比较少了,而Java语言是内置支持多线程并发的,大家都说Java语言内置支持多线程,非常非常的强大和方便,但一直没有深入研究jdk内concurrent包.今天就认真学习了一下java.util.concurrent包,发现jdk多线程编程果然是强大和方便.本文是学习java.util.concurrent包内线程池及相关接口的一些总结. 任务接口抽象 Runnable接口 在java.lang包内,为多线程提供了Runnable接口. public int