Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式
生活随笔
收集整理的這篇文章主要介紹了
Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一共有以下三種方式:
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基礎有待提高!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea单行注释对齐修改Settings
- 下一篇: 微机原理汇编之部分重要知识整合包括:判断