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

明輝手游網(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 接口。



主站蜘蛛池模板: 亚洲乱码一区二区三区国产精品 | 天天做天天爰夜夜爽 | 在线亚洲精品国产波多野结衣 | 色综合综合 | 青青久操视频 | 亚洲五月七月丁香缴情 | 性刺激性色爽爱小说 | 青青青青青青青青草 | 日本免费网 | 天天黄视频 | 日韩视频第二页 | 中文字幕不卡 | 欧美爽爽爽爽爽爽视频 | 天天干天天狠 | 伊人久久免费视频 | 人人免费人人专区 | 亚洲国产成人久久综合野外 | 欧美在线播放视频 | 人人入人人爱 | 性刺激免费视频观看在线观看 | 天天干天天爽天天射 | 中文字幕在线看视频一区二区三区 | 亚洲最大免费视频网 | 四虎国产永久在线精品免费观看 | 性生大片一级毛片免费观看 | 丝袜美女爽爆91 | 四虎家庭影院 | 色妞综合网 | 日韩欧美一区二区久久黑人 | 青草免费 | 日韩一级在线 | 香蕉成人福利片视频在线下载 | 日本欧美一级二级三级不卡 | 伊人影院在线观看视频 | 日韩中文字幕免费版 | 日本一区二区在线免费观看 | 欧美视频在线播放 | 四虎免费影院在线播放 | 日韩操 | 色站app | 网站在线观看免费 |