通俗易懂两种常用的多线程实现方式——Java并发系列学习笔记
生活随笔
收集整理的這篇文章主要介紹了
通俗易懂两种常用的多线程实现方式——Java并发系列学习笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果我們想執行多線程操作,通常有兩種方法
一. 繼承Thread類方式
步驟:
class MyThread extends Thread{ private int ticket=10; public void run(){ for(int i=0;i<20;i++){ if(this.ticket>0){ System.out.println("賣票:ticket"+this.ticket--); } } } };public class ThreadTicket { public static void main(String[] args) { MyThread mt1=new MyThread(); MyThread mt2=new MyThread(); MyThread mt3=new MyThread(); mt1.start();//每個線程都各賣了10張,共賣了30張票 mt2.start();//但實際只有10張票,每個線程都賣自己的票 mt3.start();//沒有達到資源共享 } }
?
二. 實現Runnable接口
步驟:
package org.demo.runnable; class MyThread implements Runnable{ private int ticket=10; public void run(){ for(int i=0;i<20;i++){ if(this.ticket>0){ System.out.println("賣票:ticket"+this.ticket--); } } } } package org.demo.runnable; public class RunnableTicket { public static void main(String[] args) { MyThread mt=new MyThread(); new Thread(mt).start();//同一個mt,但是在Thread中就不可以,如果用同一 new Thread(mt).start();//個實例化對象mt,就會出現異常 new Thread(mt).start(); } };
三. 總結
采用繼承Thread類方式:
(1)優點:編寫簡單,如果需要訪問當前線程,無需使用Thread.currentThread()方法,直接使用this,即可獲得當前線程。
(2)缺點:因為線程類已經繼承了Thread類,所以不能再繼承其他的父類。
采用實現Runnable接口方式:
(1)優點:線程類只是實現了Runable接口,還可以繼承其他的類。在這種方式下,可以多個線程共享同一個目標對象,所以非常適合多個相 同線程來處理同一份資源的情況,從而可以將CPU代碼和數據分開,形成清晰的模型,較好地體現了面向對象的思想。
(2)缺點:編程稍微復雜,如果需要訪問當前線程,必須使用Thread.currentThread()方法。
局限:
在并發編程中,我們經常用到非阻塞的模型,在上述的兩種多線程實現中,不管是繼承thread類還是實現runnable接口,都無法保證獲取到之前的執行結果。通過實現Callback接口,并用Future可以來接收多線程的執行結果。
總結
以上是生活随笔為你收集整理的通俗易懂两种常用的多线程实现方式——Java并发系列学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解get与post请求方式、conte
- 下一篇: 线程池应该设置多少核心线程数——Java