六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java 程序中的多線(xiàn)程

[摘要]在Java程序中使用多線(xiàn)程要比在 C 或 C++ 中容易得多,這是因?yàn)?Java 編程語(yǔ)言提供了語(yǔ)言級(jí)的支持。本文通過(guò)簡(jiǎn)單的編程示例來(lái)說(shuō)明 Java 程序中的多線(xiàn)程是多么直觀。讀完本文以后,用戶(hù)應(yīng)該能夠編寫(xiě)簡(jiǎn)單的多線(xiàn)程程序。   為什么會(huì)排隊(duì)等待?   下面的這個(gè)簡(jiǎn)單的 Java 程序完成四項(xiàng)不相...
在Java程序中使用多線(xiàn)程要比在 C 或 C++ 中容易得多,這是因?yàn)?Java 編程語(yǔ)言提供了語(yǔ)言級(jí)的支持。本文通過(guò)簡(jiǎn)單的編程示例來(lái)說(shuō)明 Java 程序中的多線(xiàn)程是多么直觀。讀完本文以后,用戶(hù)應(yīng)該能夠編寫(xiě)簡(jiǎn)單的多線(xiàn)程程序。

  為什么會(huì)排隊(duì)等待?

  下面的這個(gè)簡(jiǎn)單的 Java 程序完成四項(xiàng)不相關(guān)的任務(wù)。這樣的程序有單個(gè)控制線(xiàn)程,控制在這四個(gè)任務(wù)之間線(xiàn)性地移動(dòng)。此外,因?yàn)樗璧馁Y源 — 打印機(jī)、磁盤(pán)、數(shù)據(jù)庫(kù)和顯示屏 -- 由于硬件和軟件的限制都有內(nèi)在的潛伏時(shí)間,所以每項(xiàng)任務(wù)都包含明顯的等待時(shí)間。因此,程序在訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)之前必須等待打印機(jī)完成打印文件的任務(wù),等等。如果您正在等待程序的完成,則這是對(duì)計(jì)算資源和您的時(shí)間的一種拙劣使用。改進(jìn)此程序的一種方法是使它成為多線(xiàn)程的。

  四項(xiàng)不相關(guān)的任務(wù)

  class myclass {
  static public void main(String args[]) {
   print_a_file();
   manipulate_another_file();
   access_database();
   draw_picture_on_screen();
   }
  }

  在本例中,每項(xiàng)任務(wù)在開(kāi)始之前必須等待前一項(xiàng)任務(wù)完成,即使所涉及的任務(wù)毫不相關(guān)也是這樣。但是,在現(xiàn)實(shí)生活中,我們經(jīng)常使用多線(xiàn)程模型。我們?cè)谔幚砟承┤蝿?wù)的同時(shí)也可以讓孩子、配偶和父母完成別的任務(wù)。例如,我在寫(xiě)信的同時(shí)可能打發(fā)我的兒子去郵局買(mǎi)郵票。用軟件術(shù)語(yǔ)來(lái)說(shuō),這稱(chēng)為多個(gè)控制(或執(zhí)行)線(xiàn)程。

  可以用兩種不同的方法來(lái)獲得多個(gè)控制線(xiàn)程:

  ☆ 多個(gè)進(jìn)程
  在大多數(shù)操作系統(tǒng)中都可以創(chuàng)建多個(gè)進(jìn)程。當(dāng)一個(gè)程序啟動(dòng)時(shí),它可以為即將開(kāi)始的每項(xiàng)任務(wù)創(chuàng)建一個(gè)進(jìn)程,并允許它們同時(shí)運(yùn)行。當(dāng)一個(gè)程序因等待網(wǎng)絡(luò)訪(fǎng)問(wèn)或用戶(hù)輸入而被阻塞時(shí),另一個(gè)程序還可以運(yùn)行,這樣就增加了資源利用率。但是,按照這種方式創(chuàng)建每個(gè)進(jìn)程要付出一定的代價(jià):設(shè)置一個(gè)進(jìn)程要占用相當(dāng)一部分處理器時(shí)間和內(nèi)存資源。而且,大多數(shù)操作系統(tǒng)不允許進(jìn)程訪(fǎng)問(wèn)其他進(jìn)程的內(nèi)存空間。因此,進(jìn)程間的通信很不方便,并且也不會(huì)將它自己提供給容易的編程模型。

  ☆ 線(xiàn)程
  線(xiàn)程也稱(chēng)為輕型進(jìn)程 (LWP)。因?yàn)榫(xiàn)程只能在單個(gè)進(jìn)程的作用域內(nèi)活動(dòng),所以創(chuàng)建線(xiàn)程比創(chuàng)建進(jìn)程要廉價(jià)得多。這樣,因?yàn)榫(xiàn)程允許協(xié)作和數(shù)據(jù)交換,并且在計(jì)算資源方面非常廉價(jià),所以線(xiàn)程比進(jìn)程更可取。線(xiàn)程需要操作系統(tǒng)的支持,因此不是所有的機(jī)器都提供線(xiàn)程。Java 編程語(yǔ)言,作為相當(dāng)新的一種語(yǔ)言,已將線(xiàn)程支持與語(yǔ)言本身合為一體,這樣就對(duì)線(xiàn)程提供了強(qiáng)健的支持。

  使用 Java 編程語(yǔ)言實(shí)現(xiàn)線(xiàn)程

  Java 編程語(yǔ)言使多線(xiàn)程如此簡(jiǎn)單有效,以致于某些程序員說(shuō)它實(shí)際上是自然的。盡管在 Java 中使用線(xiàn)程比在其他語(yǔ)言中要容易得多,仍然有一些概念需要掌握。要記住的一件重要的事情是 main() 函數(shù)也是一個(gè)線(xiàn)程,并可用來(lái)做有用的工作。程序員只有在需要多個(gè)線(xiàn)程時(shí)才需要?jiǎng)?chuàng)建新的線(xiàn)程。

  Thread 類(lèi)
  Thread 類(lèi)是一個(gè)具體的類(lèi),即不是抽象類(lèi),該類(lèi)封裝了線(xiàn)程的行為。要?jiǎng)?chuàng)建一個(gè)線(xiàn)程,程序員必須創(chuàng)建一個(gè)從 Thread 類(lèi)導(dǎo)出的新類(lèi)。程序員必須覆蓋 Thread 的 run() 函數(shù)來(lái)完成有用的工作。用戶(hù)并不直接調(diào)用此函數(shù);而是必須調(diào)用 Thread 的 start() 函數(shù),該函數(shù)再調(diào)用 run()。下面的代碼說(shuō)明了它的用法:

  創(chuàng)建兩個(gè)新線(xiàn)程

  import java.util.*;

  class TimePrinter extends Thread {
   int pauseTime;
   String name;
   public TimePrinter(int x, String n) {
   pauseTime = x;
   name = n;
   }

   public void run() {
   while(true) {
   try {
   System.out.println(name + ":" + new
   Date(System.currentTimeMillis()));
   Thread.sleep(pauseTime);
   } catch(Exception e) {
   System.out.println(e);
   }
   }
   }

   static public void main(String args[]) {
   TimePrinter tp1 = new TimePrinter(1000, "Fast Guy");
   tp1.start();
   TimePrinter tp2 = new TimePrinter(3000, "Slow Guy");
   tp2.start();
  
   }
  }

  在本例中,我們可以看到一個(gè)簡(jiǎn)單的程序,它按兩個(gè)不同的時(shí)間間隔(1 秒和 3 秒)在屏幕上顯示當(dāng)前時(shí)間。這是通過(guò)創(chuàng)建兩個(gè)新線(xiàn)程來(lái)完成的,包括 main() 共三個(gè)線(xiàn)程。但是,因?yàn)橛袝r(shí)要作為線(xiàn)程運(yùn)行的類(lèi)可能已經(jīng)是某個(gè)類(lèi)層次的一部分,所以就不能再按這種機(jī)制創(chuàng)建線(xiàn)程。雖然在同一個(gè)類(lèi)中可以實(shí)現(xiàn)任意數(shù)量的接口,但 Java 編程語(yǔ)言只允許一個(gè)類(lèi)有一個(gè)父類(lèi)。同時(shí),某些程序員避免從 Thread 類(lèi)導(dǎo)出,因?yàn)樗鼜?qiáng)加了類(lèi)層次。對(duì)于這種情況,就要 runnable 接口。



主站蜘蛛池模板: 日本韩国欧美在线观看 | 羞羞影院男女午夜爽爽影视 | 色黄视频在线观看 | 四虎成人在线 | 日韩精品手机在线 | 亚洲天堂视频一区 | 人人狠狠综合久久亚洲88 | 日日射夜夜操 | 天天躁夜夜躁狠狠躁2018a | 四虎 2022 永久网站 | 小明精品国产一区二区三区 | 色播丁香 | 日本高清在线观看视频你懂的 | 亚洲欧美日韩在线精品一区二区 | 自怕偷自怕亚洲精品 | 日日爽夜夜| 日韩a在线观看 | 五月婷色| 天天摸夜夜添狠狠添2018 | 日韩.欧美.国产.无需播放器 | 伊人久久大香线蕉观看 | 天天天天做夜夜夜夜 | 日韩欧美亚洲乱码中文字幕 | 中国国产aa一级毛片 | 欧美亚洲国产另类 | 手机看片福利盒子久久 | 日日做夜夜做 | 亚洲国产2017男人a天堂 | 伊人色影院 | 日本丰满bbb | 天天干天天干 | 欧美一线天 | 香蕉国产综合久久猫咪 | 午夜精品久久久久久 | 王者天下第五季在线观看 | 中文字幕福利 | 亚洲天堂一区二区 | 伊人网站在线观看 | 亚洲综合免费视频 | 青青草自拍 | 亚洲欧洲一区二区三区在线 |