最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java并發(fā)編程之常用的多線(xiàn)程實(shí)現(xiàn)方式分析

 更新時(shí)間:2020年02月07日 09:35:43   作者:扎心了,老鐵  
這篇文章主要介紹了Java并發(fā)編程之常用的多線(xiàn)程實(shí)現(xiàn)方式,結(jié)合實(shí)例形式分析了java并發(fā)編程中多線(xiàn)程的相關(guān)原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java并發(fā)編程之常用的多線(xiàn)程實(shí)現(xiàn)方式。分享給大家供大家參考,具體如下:

概述

常用的多線(xiàn)程實(shí)現(xiàn)方式有2種:

1. 繼承Thread類(lèi)

2. 實(shí)現(xiàn)Runnable接口

之所以說(shuō)是常用的,是因?yàn)橥ㄟ^(guò)還可以通過(guò)JUC(java.util.concurrent)包中的線(xiàn)程池來(lái)實(shí)現(xiàn)多線(xiàn)程。關(guān)于線(xiàn)程池的內(nèi)容,我們以后會(huì)詳細(xì)介紹;現(xiàn)在,先對(duì)的Thread和Runnable進(jìn)行了解。

Thread簡(jiǎn)介

Thread 是一個(gè)類(lèi)。Thread本身就實(shí)現(xiàn)了Runnable接口。它的聲明如下:

public class Thread implements Runnable {}

Thread的作用是實(shí)現(xiàn)多線(xiàn)程。

ThreadTest.java 源碼

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(this.getName()+" 賣(mài)票:ticket"+this.ticket--);
   }
  }
 } 
};
public class ThreadTest { 
 public static void main(String[] args) { 
  // 啟動(dòng)3個(gè)線(xiàn)程t1,t2,t3;每個(gè)線(xiàn)程各賣(mài)10張票!
  MyThread t1=new MyThread();
  MyThread t2=new MyThread();
  MyThread t3=new MyThread();
  t1.start();
  t2.start();
  t3.start();
 } 
}

運(yùn)行結(jié)果

Thread-0 賣(mài)票:ticket10
Thread-1 賣(mài)票:ticket10
Thread-2 賣(mài)票:ticket10
Thread-1 賣(mài)票:ticket9
Thread-0 賣(mài)票:ticket9
Thread-1 賣(mài)票:ticket8
Thread-2 賣(mài)票:ticket9
Thread-1 賣(mài)票:ticket7
Thread-0 賣(mài)票:ticket8
Thread-1 賣(mài)票:ticket6
Thread-2 賣(mài)票:ticket8
Thread-1 賣(mài)票:ticket5
Thread-0 賣(mài)票:ticket7
Thread-1 賣(mài)票:ticket4
Thread-2 賣(mài)票:ticket7
Thread-1 賣(mài)票:ticket3
Thread-0 賣(mài)票:ticket6
Thread-1 賣(mài)票:ticket2
Thread-2 賣(mài)票:ticket6
Thread-2 賣(mài)票:ticket5
Thread-2 賣(mài)票:ticket4
Thread-1 賣(mài)票:ticket1
Thread-0 賣(mài)票:ticket5
Thread-2 賣(mài)票:ticket3
Thread-0 賣(mài)票:ticket4
Thread-2 賣(mài)票:ticket2
Thread-0 賣(mài)票:ticket3
Thread-2 賣(mài)票:ticket1
Thread-0 賣(mài)票:ticket2
Thread-0 賣(mài)票:ticket1

Runnable簡(jiǎn)介

Runnable 是一個(gè)函數(shù)式接口,該接口中只包含了一個(gè)run()方法。它的定義如下:

@FunctionalInterface
public interface Runnable {
 public abstract void run();
}

Runnable的作用,實(shí)現(xiàn)多線(xiàn)程。我們可以定義一個(gè)類(lèi)A實(shí)現(xiàn)Runnable接口;然后,通過(guò)new Thread(new A())等方式新建線(xiàn)程。

RunnableTest.java 源碼

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(Thread.currentThread().getName()+" 賣(mài)票:ticket"+this.ticket--);
   }
  }
 } 
}; 
public class RunnableTest { 
 public static void main(String[] args) { 
  MyThread mt=new MyThread();
  // 啟動(dòng)3個(gè)線(xiàn)程t1,t2,t3(它們共用一個(gè)Runnable對(duì)象),這3個(gè)線(xiàn)程一共賣(mài)10張票!
  Thread t1=new Thread(mt);
  Thread t2=new Thread(mt);
  Thread t3=new Thread(mt);
  t1.start();
  t2.start();
  t3.start();
 } 
}

運(yùn)行結(jié)果

Thread-0 賣(mài)票:ticket10
Thread-2 賣(mài)票:ticket8
Thread-1 賣(mài)票:ticket9
Thread-2 賣(mài)票:ticket6
Thread-0 賣(mài)票:ticket7
Thread-2 賣(mài)票:ticket4
Thread-1 賣(mài)票:ticket5
Thread-2 賣(mài)票:ticket2
Thread-0 賣(mài)票:ticket3
Thread-1 賣(mài)票:ticket1

Thread和Runnable的異同點(diǎn)

Thread 和 Runnable 的相同點(diǎn):都是“多線(xiàn)程的實(shí)現(xiàn)方式”。
Thread 和 Runnable 的不同點(diǎn)
Thread 是類(lèi),而Runnable是接口;Thread本身是實(shí)現(xiàn)了Runnable接口的類(lèi)。我們知道“一個(gè)類(lèi)只能有一個(gè)父類(lèi),但是卻能實(shí)現(xiàn)多個(gè)接口”,因此Runnable具有更好的擴(kuò)展性。
此外,Runnable還可以用于“資源的共享”。即,多個(gè)線(xiàn)程都是基于某一個(gè)Runnable對(duì)象建立的,它們會(huì)共享Runnable對(duì)象上的資源。
通常,建議通過(guò)“Runnable”實(shí)現(xiàn)多線(xiàn)程!

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java進(jìn)程與線(xiàn)程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 23種設(shè)計(jì)模式(9) java橋接模式

    23種設(shè)計(jì)模式(9) java橋接模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之橋接模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 使用React和Java實(shí)現(xiàn)文本摘要小工具

    使用React和Java實(shí)現(xiàn)文本摘要小工具

    本文將詳細(xì)介紹如何使用 React 和 Java 搭建一個(gè)小型文本摘要工具,并基于 Hugging Face 提供的 API 來(lái)實(shí)現(xiàn)智能摘要功能,感興趣的可以了解下
    2024-11-11
  • Spring Mybatis 分頁(yè)插件使用教程

    Spring Mybatis 分頁(yè)插件使用教程

    這篇文章主要介紹了Spring Mybatis分頁(yè)插件使用教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • SpringBoot MongoDB詳細(xì)使用教程

    SpringBoot MongoDB詳細(xì)使用教程

    這篇文章主要介紹了SpringBoot整合Mongodb實(shí)現(xiàn)簡(jiǎn)單的增刪查改,MongoDB是一個(gè)以分布式數(shù)據(jù)庫(kù)為核心的數(shù)據(jù)庫(kù),因此高可用性、橫向擴(kuò)展和地理分布是內(nèi)置的,并且易于使用。況且,MongoDB是免費(fèi)的,開(kāi)源的,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • 圖解二叉樹(shù)的三種遍歷方式及java實(shí)現(xiàn)代碼

    圖解二叉樹(shù)的三種遍歷方式及java實(shí)現(xiàn)代碼

    本篇文章主要介紹了圖解二叉樹(shù)的三種遍歷方式及java實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • SpringBoot統(tǒng)一數(shù)據(jù)返回的幾種方式

    SpringBoot統(tǒng)一數(shù)據(jù)返回的幾種方式

    在Web應(yīng)用程序開(kāi)發(fā)中,統(tǒng)一數(shù)據(jù)返回格式對(duì)于前后端分離項(xiàng)目尤為重要,本文就來(lái)介紹一下SpringBoot統(tǒng)一數(shù)據(jù)返回的幾種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java 比較字符串實(shí)例詳解

    Java 比較字符串實(shí)例詳解

    這篇文章主要介紹了 Java 比較字符串實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 解決mybatis 數(shù)據(jù)庫(kù)date 與 java中Date類(lèi)型映射問(wèn)題

    解決mybatis 數(shù)據(jù)庫(kù)date 與 java中Date類(lèi)型映射問(wèn)題

    這篇文章主要介紹了解決mybatis 數(shù)據(jù)庫(kù)date 與 java中Date類(lèi)型映射問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)吧
    2020-11-11
  • 分布式面試消息隊(duì)列解決消息重復(fù)保證消息順序

    分布式面試消息隊(duì)列解決消息重復(fù)保證消息順序

    這篇文章主要介紹了分布式面試問(wèn)題:分布式消息隊(duì)列如何解決消息重復(fù)并保證消息順序面試問(wèn)題解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 解決Feign獲取異常信息的處理方案

    解決Feign獲取異常信息的處理方案

    這篇文章主要介紹了解決Feign獲取異常信息的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

桂平市| 龙游县| 偏关县| 嘉善县| 农安县| 黄大仙区| 澄城县| 石棉县| 封开县| 北碚区| 台东市| 永登县| 海盐县| 琼海市| 武城县| 菏泽市| 新余市| 饶河县| 林芝县| 康马县| 沧州市| 阳高县| 微博| 东台市| 通化市| 景宁| 黔江区| 商南县| 沧源| 湖南省| 定边县| 大石桥市| 时尚| 曲沃县| 通化市| 依安县| 龙江县| 柏乡县| 亚东县| 苍南县| 乌鲁木齐市|