您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關java中多線程與線程池怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
繼承Thread去執行任務,確實可以開啟一個線程去執行任務,如果經常的去開啟一些線程,也會導致系統資源的浪費。
public static class Mythread extends Thread{ @Override public void run() { System.out.println("當前線程"+Thread.currentThread().getId()); int i = 10/2; System.out.println("運行結果"+i); } } //調用線程。 public static void main(String[] args) throws ExecutionException, InterruptedException { /**thread執行方式*/ Mythread mythread = new Mythread(); mythread.start();//啟動線程 System.out.println("main--end"); }
public static class MyRunable implements Runnable { @Override public void run() { System.out.println("當前線程"+Thread.currentThread().getId()); int i = 10/2; System.out.println("運行結果"+i); } }
調用。
/** * runable的啟動方式 */ MyRunable runable = new MyRunable(); new Thread(runable).start(); System.out.println("main--end");
/** * Callable可以允許有返回值 */ public static class Callale01 implements Callable<Integer> { @Override public Integer call() throws Exception { System.out.println("當前線程"+Thread.currentThread().getId()); int i = 10/2; System.out.println("運行結果"+i); return i; } }
調用。這里需要用callable構建futureTask
/** * callale的啟動方式 */ FutureTask<Integer> futureTask =new FutureTask<>(new Callale01()); //取返回結果。 Integer i = futureTask.get(); new Thread(futureTask).start(); System.out.println("返回結果是:"+i);
線程池才是我們java開發中,經常用到一種開啟多線程的方式,線程池,自己去管理線程。可以節省系統資源。通常我們會將下面的一些配置寫在一些配置類中
/** * 七大參數 * corePoolSize: 1.核心線程數[一直存在]: 線程池創建好了以后。就準備就緒的線程數量。 * maxinumPoolSize: 2 最大線程數量 * keepaliveTime: 存活時間。空閑線程的最大的等待時間。 * unit 等待時間的單位 * blockingQueue 阻塞隊列。如果任務很多就會放在隊列里面,只要有線程空閑了,就會去隊列里面去取。 * threadFactory :線程的工廠。 * RejectExecutionHandler :如果隊列滿了。按照我們指定的策略。拒絕執行任務。 * */ ThreadPoolExecutor executor = new ThreadPoolExecutor(5,100,10,TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
1 newCachedThreadPool()
創建一個可緩存的線程池,如果線程池長度超過了處理的需要,可靈活的回收空閑線程。若無可回收。則創建新線程。
Executors.newCachedThreadPool();
2.newFixedThreadPool(6)
創建一個固定大小的線程池。
3 newScheduledThreadPool()
定時任務的線程池。
4.newSingleThreadExecutor()
Executors.newSingleThreadExecutor();
感謝各位的閱讀!關于“java中多線程與線程池怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。