一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)

Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)

2020-01-16 16:33mrr JAVA教程

Java多線程實(shí)現(xiàn)方式有兩種,第一種是繼承Thread類,第二種是實(shí)現(xiàn)Runnable接口,兩種有很多差異,下面跟著本文一起學(xué)習(xí)吧

先看一下java線程運(yùn)行時(shí)各個(gè)階段的運(yùn)行狀態(tài)

Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)

線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個(gè)線程可以創(chuàng)建和撤消另一個(gè)線程,同一進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。由于線程之間的相互制約,致使線程在運(yùn)行中呈現(xiàn)出間斷性。

在引入線程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位。由于線程比進(jìn)程更小,基本上不擁有系統(tǒng)資源,故對它的調(diào)度所付出的開銷就會小得多,能更高效的提高系統(tǒng)內(nèi)多個(gè)程序間并發(fā)執(zhí)行的程度,從而顯著提高系統(tǒng)資源的利用率和吞吐量。

線程是程序中一個(gè)單一的順序控制流程。在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,稱為多線程。

多線程主要是為了節(jié)約CPU時(shí)間,發(fā)揮利用,線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和CPU。

多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。

java實(shí)現(xiàn)多線程有兩種方法

1、繼承Thread類

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

這兩種方法的共同點(diǎn):

不論用哪種方法,都必須用Thread(如果是Thead子類就用它本身)產(chǎn)生線程,然后再調(diào)用start()方法。

兩種方法的不同點(diǎn):

1、繼承Thread類有一個(gè)缺點(diǎn)就是單繼承,而實(shí)現(xiàn)Runnable接口則彌補(bǔ)了它的缺點(diǎn),可以實(shí)現(xiàn)多繼承

2、繼承Thread類必須如果產(chǎn)生Runnable實(shí)例對象,就必須產(chǎn)生多個(gè)Runnable實(shí)例對象,然后再用Thread產(chǎn)生多個(gè)線程;而實(shí)現(xiàn)Runnable接口,只需要建立一個(gè)實(shí)現(xiàn)這個(gè)類的實(shí)例,然后用這一個(gè)實(shí)例對象產(chǎn)生多個(gè)線程。即實(shí)現(xiàn)了資源的共享性

基于以上兩點(diǎn)所以建議用第二種方法

下面用例子來做說明

程序1:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.dr.runnable1;
//一個(gè)類只要繼承了Thread類,則此類就是多線程類
class MyThread extends Thread
{
 private String name;
 public MyThread(String name)
 {
  this.name=name;
 }
 //如果要使用多線程,則必須有一個(gè)方法的主體
 public void run()
 {
  //打印輸出
  for(int i=0;i<10;i++)
  {
   System.out.println(this.name+"----->運(yùn)行、、、、");
  }
 }
}
public class Demo1 {
 public static void main(String args[])
 {
//第一種方法
   Runnable r1=new MyThread("線程A");
  Runnable r2=new MyThread("線程B");
  Runnable r3=new MyThread("線程C");
  Thread t1=new Thread(r1);
  Thread t2=new Thread(r2);
  Thread t3=new Thread(r3);
  t1.start();
  t2.start();
  t3.start();
 //  mt1.run();//線程執(zhí)行,使用start方法
//  mt2.run();
//  mt3.run();
//第二種方法
//  MyThread mt1=new MyThread("線程A");
//  MyThread mt2=new MyThread("線程B");
//  MyThread mt3=new MyThread("線程C");
//  mt1.start();
//  mt1.start();//線程只能啟動一次
//  mt2.start();
//  mt3.start();
 }
}

程序的運(yùn)行結(jié)果是:

Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)

這是繼承了Thread類,第一種方法產(chǎn)生多個(gè)Runnable實(shí)例對象,然后用Thread產(chǎn)生多個(gè)線程

第二種方法,因?yàn)檫@個(gè)類已經(jīng)繼承了Thread類,所以就可以直接利用它本身產(chǎn)生多個(gè)線程

程序2:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.dr.runnable1;
class MyThread1 implements Runnable
{
 private int ticket=10;
 public void run()
 {
  for(int i=0;i<500;i++)
  {
   if(this.ticket>0)
   {
    System.out.println("賣票----->"+(this.ticket--));
   }
  }
 }
}
public class Demo2 {
 public static void main(String args[])
 {
   MyThread1 mt=new MyThread1();
  Thread t1=new Thread(mt);
  Thread t2=new Thread(mt);
  Thread t3=new Thread(mt);
  t1.start();
  t2.start();
  t3.start();
 }
}

程序運(yùn)行結(jié)果:

Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)

這個(gè)程序是實(shí)現(xiàn)Runnable了,產(chǎn)生一類的實(shí)例對象,然后用Thread產(chǎn)生多個(gè)線程。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品无码国产AV一区二区三区 | 海绵宝宝第二季全集免费观看 | 色综合天天综合网看在线影院 | 波多野结衣在线观看中文字幕 | 国产午夜精品一区二区三区不卡 | www.91在线视频| 亚洲人成伊人成综合网久久 | acg火影忍者熟密姬纲手h | 欧美免赞性视频 | 国产男技师 | 99久久爱热6在线播放 | 国产日韩欧美精品在线 | 国内精品一区二区在线观看 | 无人在线高清免费看 | 亚洲精品国产AV成人毛片 | 啊哈用力cao我 | 天生奶水1v1高h | 四虎影院在线免费播放 | 97视频免费人人观看人人 | 国产精品视频第一区二区 | nxgx欧美 | 亚洲国产在线午夜视频无 | 黄+色+性+人免费 | 国产精品亚洲综合久久 | 调教女高中生第3部分 | 美女脱一净二净不带胸罩 | 亚洲av欧美在我 | 男同巨黄gay小说好爽 | 国产伊人久久 | 国产91精品久久久久久 | 456亚洲人成高清在线 | 日韩欧美综合在线二区三区 | 4hu永久地域网名入口 | 日本不卡免费新一二三区 | 国产成+人+综合+亚洲欧美丁香花 | 日本视频一区在线观看免费 | 婷婷在线观看香蕉五月天 | 香蕉国产人午夜视频在线观看 | 四虎影视884aa·com | 国产一及毛片 | 久久综合久综合久久鬼色 |