方式一:继承Thread类

新建一个类并该类声明为Thread的子类。 这个子类应该重写run类的方法。例如,计算大于规定值的素数的线程可以写成如下:

class PrimeThread extends Thread {long minPrime;PrimeThread(long minPrime) {this.minPrime = minPrime;}public void run() {// compute primes larger than minPrime. . .}}

然后,以下代码将创建一个线程并启动它运行:

PrimeThread p = new PrimeThread(143);
p.start();

其中start方法是Thread父类中的一个方法,该方法的目的就是创建新的线程,Java虚拟机调用此线程的run方法。

方式二:继承Runnable接口,实现run方法;这种其他风格的同一个例子如下所示:

class PrimeRun implements Runnable {long minPrime;PrimeRun(long minPrime) {this.minPrime = minPrime;}public void run() {// compute primes larger than minPrime. . .}}

然后,以下代码将创建一个线程并启动它运行:

 PrimeRun p = new PrimeRun(143);new Thread(p).start();

其中的start方法与上述无异,都是新创建一个线程并调用run方法。

方式三:继承Callable接口,实现call方法。该新建线程的接口是在JDK1.5之后新推出的;例子如下:

​
class CallableTest implements Callable {//返回结果并可能引发异常的任务。public V call throws Exception() {...}
}​​

Callable接口类似于Runnable ,因为它们都是为其实例可能由另一个线程执行的类设计的。 然而,Runnable不返回结果,也不能抛出被检查的异常。

然后,以下代码将创建一个线程并启动它运行:

​
//创建Callable接口实现类的对象
CallableTest callableTest = new CallableTest();
//将此Callable接口实现类的对象作为传递到FutureTask构造器中,创建FutureTask的对象
FutureTask futureTask = new FutureTask(callableTest);
//将futureTask的对象作为参数传递到Thread类的构造器中,创建Thread对象,并调用start()
new Thread(futureTask).start();
try{//获取Callable中call方法的返回值//get()返回值即为FutureTask构造器参数Callable实现类重写的call()的返回值Objest obj = futureTask.get();
}catch(InterruptedException e){e.printStackTrace();
}catch(ExecutionException e){e.printStackTrace();
}​

方式四: 创建线程池方法创建线程。JDK1.5之后,有了线程池相关的API:ExecutorService和Executors

ExecutorService:真正的线程池接口

Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池

//利用Executors的方法newFixedThreadPool,该方法是创建一个可重用n个固定线程数的线程池
ExecutorService service = Executors.newFixedThreadPool(int n);
//execute方法参数只能是继承Runnable接口的实现类
service.execute(Runnable command);
//submit方法可写继承Callable和Runnable接口的实现类,大多数情况下写Callable,因为该方法有返回值与其中的call方法相对应,返回值用FutureTask接收,与方式三相同
service.submit(Callable<T> task);
//创建线程池需要手动关闭
service.shutdown();

Java创建线程池的几种方式相关推荐

  1. java创建线程池几种方式_java知识总结-创建线程池的6种方式

    一.创建线程池的6种方式: Executors.newCachedThreadPool(); 创建一个可缓存线程池,应用中存在的线程数可以无限大 Executors.newFixedThreadPoo ...

  2. 创建线程池的七种方式

    在 Java 语言中,并发编程往往都是通过床架线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景.总结来说线程池的创建可以分为两大类: 通过 Executors ...

  3. 线程池的五种状态及创建线程池的几种方式

    上篇<Java线程的6种状态详解及创建线程的4种方式> 前言:我们都知道,线程是稀有资源,系统频繁创建会很大程度上影响服务器的使用效率,如果不加以限制,很容易就会把服务器资源耗尽.所以,我 ...

  4. 【多线程】创建线程池有几种方式

    网上的文章一般会说,创建线程池基本上是2种方式.ThreadPoolExecutor或者Executors.本文就是通过剖析源码,看下它们的实现. ThreadPoolExecutor ThreadP ...

  5. 从源码分析创建线程池的4种方式

    摘要:从创建线程池的源码来深入分析究竟有哪些方式可以创建线程池. 本文分享自华为云社区<[高并发]从源码角度分析创建线程池究竟有哪些方式>,作者:冰 河 . 在Java的高并发领域,线程池 ...

  6. 创建线程池的四种方式_创建线程到底有几种方式?

    很多时候,在项目中使用线程的情况很少,导致很多人只停想起最常见的两种创建线程的方法,即继承Thread类和实现Runnable接口. 而网络上大家有人认为是三种实现方式,也有人认为是四种实现,下面我们 ...

  7. 线程池介绍及创建线程池的4种方式

    1. 什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池.在开发过程中,合理地使用线程池能够带来3个好处. 第一:降低资源消耗.通过重复利 ...

  8. java创建线程常用的两种方式

    一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代 表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的 ...

  9. Java创建线程池的方式

    Java创建线程池的方式 文章目录 Java创建线程池的方式 一.通过Executors工厂方法创建 1.Executors.newSingleThreadExecutor() 2.Executors ...

最新文章

  1. 别只顾着写代码,学会这 25 条比涨工资都重要,你信不?
  2. java 虚拟机规范_Java虚拟机规范----Java虚拟机结构
  3. linux中cut -c命令,linux中~/cut/argus/
  4. mysql select 所有表_怎样用SQL语句查询一个数据库中的所有表
  5. 基于谱减法的声音去噪
  6. c++从txt中读取数据,数据并不是一行路径(实用)
  7. 大厂2020届实习生笔试题
  8. Java期末设计(十三周)
  9. jQuery ajax设置全局配置
  10. 蒸汽管道图纸符号_管道图形符号
  11. signature=29c90d1a8d382ff261d00a931708390a,发烧音响功放(顶级Hi-End音响发烧器材介绍)...
  12. 基于龙芯CPU中标麒麟操作系统的国产半实物仿真系统ETestDEV
  13. 码农故事1——受惠寄居遇驴友 维艰窘境见人心
  14. tracert路由跟踪(ICMP)
  15. 最简单的验证码(利用JSP生成验证码)
  16. bigbrother的python第一天 复习基础知识
  17. re模块 正则表达式
  18. MySQL 数据库去重处理(小白)
  19. JAVA--java计算时间差,日期差小结
  20. 前端blob下载文件

热门文章

  1. 我的世界服务器怎么修改小标题,我的世界修改游戏标题 | 手游网游页游攻略大全...
  2. 从实际案例看收到337调查签发之排除令后的应对策略
  3. 面试了十几家公司,我拿到了18.5k的offer
  4. PHP - 理论篇-1
  5. 设A是n*n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1=i,j=n,且i=j)在B中的位置为()
  6. turtle库实例——雪景艺术绘图
  7. 现代控制工程笔记(一)控制系统的状态空间描述
  8. 揭秘跑男全部游戏规则及说明
  9. 论文学习——多度量水文时间序列相似性分析
  10. 国内外计算机的最科技成果,中国最近的科技发展成就