一共有以下三种方式:
1.继承Thread
2.实现Runnable
3.实现Callable,并FutureTask包装

线程启动方式均是使用start()方法

先阐述优缺点:
1和2,3:
2,3优于1是使用了借口,留出来了继承的位置
1优于2,3是使用简单,实现简单

2和3:
我认为3的实现比2更复杂一些,因为2的方法效果单一

但正所谓一分耕耘一份收获,程序也是如此

3的call()方法比2的run()多出两点功能:抛异常和返回值,
而且3能通过
FutureTask类的包装对该线程监控,控制,启用取消该线程。

以下给出1,2线程的简要创建方式:

//继承Thread
class a extends Thread{
//其他什么都不做用就new,start
}
//实现Runnable
class A implements Runnable{
//重写run方法,一般在其内添加死循环
//启动方式为
//新建
// A a=new A();
//Thread t=new Thread(a);
//t.start()
}

重点介绍第三种创建方式,
以前学的不全,现在重新归纳

注意:也只能创建一个线程,并不是包装后通过FutureTask能建立多个线程,它的作用主要是用于监控被包装的线程的状态,以及控制该线程
本人踩坑(以为能多创建)

直接上代码:

package com.j;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;import java.io.*;/*** @author joker* @version 1.0* @description pdf转word* @date 2020-03-01 -- 12:01*/
class Th implements Runnable {public boolean flag = true;public void run() {System.out.println("转换中");while (true) {if (!flag) {System.out.println();System.out.println("转换word成功!");return;}System.out.print(".#");try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}}
}public class PDF {public static void main(String[] args) {try {Th th = new Th();new Thread(th).start();String pdfFile = "D:\\360安全浏览器下载\\多媒体教材.pdf";PDDocument doc = PDDocument.load(new File(pdfFile));int pagenumber = doc.getNumberOfPages();pagenumber=10;pdfFile = pdfFile.substring(0, pdfFile.lastIndexOf("."));String fileName = pdfFile + ".doc";File file = new File(fileName);if (!file.exists()) {file.createNewFile();}FileOutputStream fos = new FileOutputStream(fileName);Writer writer = new OutputStreamWriter(fos);PDFTextStripper stripper = new PDFTextStripper();stripper.setSortByPosition(true);// 排序stripper.setStartPage(5);// 设置转换的开始页stripper.setEndPage(pagenumber);// 设置转换的结束页stripper.writeText(doc, writer);//写到wordwriter.close();doc.close();th.flag=false;} catch (IOException e) {e.printStackTrace();}}}

学海无涯

java基础有待提高!

Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式相关推荐

  1. java 创建线程_【80期】说出Java创建线程的三种方式及对比

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...

  2. Java 创建线程的三种方式

    一.继承Thread类创建 1.定义一个类继承Thread类,并重写Thread类的run()方法,run()方法的方法体就是线程要完成的任务,因此把run()称为线程的执行体: 2.创建该类的实例对 ...

  3. Java创建线程的三种方式

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

  4. java 多线程编程(包括创建线程的三种方式、线程的生命周期、线程的调度策略、线程同步、线程通信、线程池、死锁等)

    1 多线程的基础知识 1.1 单核CPU和多核CPU 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务.微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那 ...

  5. Java创建线程的三种方法

    这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...

  6. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 目录 一.继承Thread类来创建线程 二.实现Runnable接口来创建线程 三.通过Callable和Future来创建线程 四.三种方式创 ...

  7. 创建线程的三种方式、线程运行原理、常见方法、线程状态

    文章目录 1.创建线程的三种方式 1.1 继承Thread类并重写run方法 1.2 使用Runnable配合Thread 1.3 通过Callable和FutureTask创建线程 2.Runnab ...

  8. 创建线程的三种方式及区别

    一:创建线程的三种方式: 1.继承Thread类 2.实现Runnable接口 3.使用Callable接口 二:创建线程的具体实现步骤: 1.继承Thread类 (1).先继承 Thread类,并且 ...

  9. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

最新文章

  1. 我是架构师-设计模式-工厂模式-工厂方法
  2. 蓝桥杯java 算法提高 摆花
  3. redis的基本使用笔记二
  4. cron4j的Jfinal plugin
  5. linux 查看cuda版本_Ubuntu18.04+Tensorflow GPU版本环境搭建
  6. 【披着递推皮的动态规划】 山区建小学 题解
  7. Vagrant 手册之 Provisioning - file 配置程序
  8. php生成excel带图片格式,php导出excel单元格带图片显示方法
  9. postman下载安装汉化及使用
  10. 关于医学影像中的轴位面(横断面)、冠状面、矢状面
  11. 注意JDBC数据库连接中资源关闭的顺序
  12. MySQL数据字典提示1146不存在的问题解决
  13. Java工程师进阶知识完全扫盲, 太全了!!
  14. ChunJun Meetup演讲分享 | 基于袋鼠云开源框架的数仓一体化建设探索
  15. 想要画漫画?掌握风格很关键!
  16. 多个中通快运的物流情况是怎么批量查询并保存到电脑的
  17. win10正确清理C盘
  18. webstorm html代码提示设置,Webstorm设置代码提示
  19. Intellij IDEA神器那些让人爱不释手的小技巧
  20. MapReduce学习之概述和设计构思

热门文章

  1. 0003 无重复字符的最长子串
  2. React+dva+antd的运用
  3. 20169214 2016-2017-2 《网络攻防实践》实验二学习总结
  4. PRISM概率模型检测器初使用--骰子模型(改进版)
  5. ASP.NET MVC3 Razor视图引擎-基础语法
  6. 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码
  7. Nslookup-查dns
  8. [论文阅读] (04) 人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术
  9. 【数据结构与算法】之深入解析“石子游戏VIII”的求解思路与算法示例
  10. HarmonyOS之深入解析通知的使用