真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中線(xiàn)程的實(shí)現(xiàn)方式有哪些

今天就跟大家聊聊有關(guān)Java中線(xiàn)程的實(shí)現(xiàn)方式有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供高平網(wǎng)站建設(shè)、高平做網(wǎng)站、高平網(wǎng)站設(shè)計(jì)、高平網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、高平企業(yè)網(wǎng)站模板建站服務(wù),十多年高平做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

一、線(xiàn)程&多線(xiàn)程

線(xiàn)程:

線(xiàn)程是進(jìn)程的一個(gè)實(shí)體,是 CPU 調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位。線(xiàn)程 自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是 它可與同屬一個(gè)進(jìn)程的其他的線(xiàn)程共享進(jìn)程所擁有的全部資源。

多線(xiàn)程:

多線(xiàn)程指在單個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線(xiàn)程執(zhí)行不同的任務(wù)。

多線(xiàn)程編程的目的,就是“最大限度地利用 cpu 資源”,當(dāng)某一線(xiàn)程的處理不需要占用 cpu 而只和 io 等資源 打交道時(shí),讓需要占用 Cpu 的其他線(xiàn)程有其他機(jī)會(huì)獲得 cpu 資源。從根本上說(shuō),這就是多線(xiàn)程編程的最終 目的。

二、線(xiàn)程實(shí)現(xiàn)的方式

  • Thread

  • Runnable

  • Callable

Thread:

繼承Thread類(lèi)并重寫(xiě)run方法。其實(shí)Thread是實(shí)現(xiàn)Runnable接口來(lái)實(shí)現(xiàn)線(xiàn)程, class Thread implements Runnable { 。

public class Test {
   public static void main(String[] args) {
       Thread01 thread01 = new Thread01();
       thread01.start();
   }
}
class Thread01 extends Thread {
   @Override
   public void run() {
       System.out.println("線(xiàn)程01執(zhí)行了。。。");
   }
}

Runnable:

實(shí)現(xiàn)Runnable并實(shí)現(xiàn)run方法,將Runnable放入到Thread中start即可。

public class Test {
   public static void main(String[] args) {
       Thread thread = new Thread(new Runnable01());
       thread.start();
   }
}

class Runnable01 implements Runnable{
   public void run() {
       System.out.println("Runnable01 running....");
   }
}

第一種方法通過(guò)覆蓋Thread中的run方法來(lái)實(shí)現(xiàn)線(xiàn)程,第二種方法中,通過(guò)源碼可以發(fā)現(xiàn),Thread中run方法的代碼為:

public void run() {
   if (target != null) {
       target.run();
   }
}

傳入的Runnable就是target,所以當(dāng)我們執(zhí)行 Thread.start() 的時(shí)候,其實(shí)是執(zhí)行的Runnable的run方法。

Callable:

實(shí)現(xiàn)Callable重寫(xiě)call方法,實(shí)現(xiàn)Callable和實(shí)現(xiàn)Runnable類(lèi)似,但是功能更強(qiáng)大,具體表現(xiàn)在:

  1. 可以在任務(wù)結(jié)束后提供一個(gè)返回值,Runnable不行

  2. call方法可以?huà)伋霎惓?,Runnable的run方法不行

  3. 可以通過(guò)運(yùn)行Callable得到的Fulture對(duì)象監(jiān)聽(tīng)目標(biāo)線(xiàn)程調(diào)用call方法的結(jié)果,得到返回值,(fulture.get(),調(diào)用后會(huì)阻塞,直到獲取到返回值)

public class Test {
   public static void main(String[] args) throws Exception {
       System.out.println("main的線(xiàn)程:" + Thread.currentThread().getName());
       Callable01 callable01 = new Callable01();
       FutureTask ft = new FutureTask(callable01);
       Thread thread = new Thread(ft);
       thread.start();
       System.out.println(ft.get()); //獲得線(xiàn)程執(zhí)行返回結(jié)果
   }
}
class Callable01 implements Callable {
   public Integer call() throws Exception {
       System.out.println("Callable01的線(xiàn)程:" + Thread.currentThread().getName());
       return 111;
   }
}

將Fulture放入Thread,能想到Fulture應(yīng)該也實(shí)現(xiàn)了Runnable接口:

Java中線(xiàn)程的實(shí)現(xiàn)方式有哪些

看完上述內(nèi)容,你們對(duì)Java中線(xiàn)程的實(shí)現(xiàn)方式有哪些有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


文章題目:Java中線(xiàn)程的實(shí)現(xiàn)方式有哪些
網(wǎng)站地址:http://weahome.cn/article/giehho.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部