xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-04
  • 語(yǔ)言: Java
  • 標(biāo)簽:

資源簡(jiǎn)介

環(huán)境:Windows XP Professional SP3, JDK 1.6 使用步驟: 1.下載解壓之后,在控制臺(tái)運(yùn)行javac ThreadPoolTest.java 2.然后根據(jù)提示運(yùn)行java命令執(zhí)行示例程序,觀看線程池的運(yùn)行結(jié)果 目標(biāo):Java中多線程技術(shù)是一個(gè)難點(diǎn),但是也是一個(gè)核心技術(shù)。因?yàn)镴ava本身就是一個(gè)多線程語(yǔ)言。本人目前在給46班講授Swing的網(wǎng)絡(luò)編程--使用Swing來(lái)模擬真實(shí)的QQ實(shí)時(shí)聊天軟件。因?yàn)樯婕暗絊ocket編程,所以一定會(huì)使用多線程編程。這里本人翻寫一個(gè)通用的線程池類,它可以用來(lái)作為工具類處理許多多線程問(wèn)題。代碼注釋非常詳盡,一行注釋一行代碼。 閱讀對(duì)象:非常熟悉Java的基本概念,并且熟悉命令行編寫代碼的人員。

資源截圖

代碼片段和文件信息

import?java.util.linkedList;

/**
????功能:一個(gè)線程池是一組有限數(shù)量的線程,它們被用來(lái)完成執(zhí)行任務(wù)
翻寫作者:Arkliszeng
時(shí)間:2010-02-21
地點(diǎn):北大青鳥(niǎo)錦江中心學(xué)術(shù)部
版本:ver?1.0.0
備注:
線程池使用ThreadGroup?API來(lái)實(shí)現(xiàn).線程組表示一個(gè)線程的集合。
此外,線程組也可以包含其他線程組。線程組構(gòu)成一棵樹(shù),在樹(shù)中,
除了初始線程組外,每個(gè)線程組都有一個(gè)父線程組。允許線程訪問(wèn)
有關(guān)自己的線程組的信息,但是不允許它訪問(wèn)有關(guān)其線程組的父線
程組或其他任何線程組的信息。

*/
public?class?ThreadPool?extends?ThreadGroup?{
????private?boolean?isAlive;?//表示線程是否活首
????private?linkedList?taskQueue;?//定義一個(gè)雙向隊(duì)列
????private?int?threadID;?//保存線程的ID
????private?static?int?threadPoolID;?//表示線程池的ID

????/**
????????在構(gòu)造方法創(chuàng)建線程池
????????@參數(shù)numThreads用來(lái)指定池中的線程個(gè)數(shù)
????*/
????public?ThreadPool(int?numThreads)?{
????????super(“線程池-“?+?(threadPoolID++));
????????setDaemon(true);//讓該線程組為精靈線程組

????????isAlive?=?true;//設(shè)置初始值為true

????????taskQueue?=?new?linkedList();//初始化任務(wù)隊(duì)列
????????for?(int?i=0;?i????????????new?PooledThread().start();//啟動(dòng)池中的線程
????????}
????}


????/**
????????功能:請(qǐng)求一個(gè)新的任務(wù)來(lái)運(yùn)行,該方法立即返回。然后任務(wù)在下一下空閑
???????? 的線程中執(zhí)行。該方法是線程安全的。
????????

任務(wù)開(kāi)始執(zhí)行時(shí)有序的到達(dá)時(shí)開(kāi)始。
????????@參數(shù)task表示運(yùn)行的任務(wù)。如果不null那么沒(méi)有任務(wù)執(zhí)行。
????????@如果本ThreadPool關(guān)閉了,那么拋出IllegalStateException。
????*/
????public?synchronized?void?runTask(Runnable?task)?{
???? //如果線程池的狀態(tài)isAlive==false值
????????if?(!isAlive)?{
????????????throw?new?IllegalStateException();//那么拋出異常
????????}
????????//如果任務(wù)不為null
????????if?(task?!=?null)?{
???????? //那么在任務(wù)把該任務(wù)加入任務(wù)階段
????????????taskQueue.add(task);
????????????//然后喚醒空閑的線程執(zhí)行該任務(wù)
????????????notify();
????????}

????}

/**
功能:獲取任務(wù)對(duì)象
*/
????protected?synchronized?Runnable?getTask()?throws?InterruptedException{
???? //如果任務(wù)隊(duì)列不是空的
????????while?(taskQueue.size()?==?0)?{
???????? //如果線程池的狀態(tài)isAlive==false值
????????????if?(!isAlive)?{
????????????????return?null;?//那么返回null值
????????????}
????????????wait();//否則等待任務(wù)出現(xiàn)(添加任務(wù))
????????}
????????//否則任務(wù)隊(duì)列中的一個(gè)任務(wù)對(duì)象
????????return?(Runnable)taskQueue.removeFirst();
????}


????/**
????????功能:關(guān)閉該線程池并且立即返回。讓所有線程停止執(zhí)行,并且所有等待任務(wù)停止執(zhí)行。
???????? 一旦一個(gè)ThreadPool被關(guān)閉了,那么該線程池中的所有的線程不再運(yùn)行。
????*/
????public?synchronized?void?close()?{
???? //如果線程池是活的
????????if?(isAlive)?{
?? //那么置為false
????????????isAlive?=?false;
????????????//然后把任務(wù)隊(duì)列清空
????????????taskQueue.clear();
????????????//最后終止線程池中所有線程的運(yùn)行
????????????interrupt();
????????}
????}


????/**
????????功能:關(guān)閉該ThreadPool活動(dòng)然后等待所有的線程運(yùn)行完成。這樣所有等待的任務(wù)會(huì)被執(zhí)行。
????*/
????public?void?join()?{
????????//?當(dāng)ThreadPool不再活動(dòng)時(shí)喚醒所有等待的線程
????????synchronized?(this)?{
????????????isAlive?=?false;
????????????notifyAll();
????????}

????????//?然后等待所有池中的線程對(duì)象執(zhí)行完畢
????????Thread[]?threads?=?new?Thread[activeCount()];?//創(chuàng)建所有池中的活動(dòng)線程
????????//把此線程組及其子組中的所有活動(dòng)線程復(fù)制到指定數(shù)組中
????????int?count?=?enumerate(threads);
????????//然后按序讓每個(gè)線程執(zhí)行完畢
????????for?(int?i=0;?i????????????try?{
????????????????threads[i].join();
????????????}
????????????catch?(InterruptedException?ex)?{?}
????????}
????}


????/**
????????功能:定義線程池中的線程,這些線程對(duì)象用來(lái)運(yùn)行任務(wù)對(duì)象(Runnables)
??????


?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????5259??2010-02-21?15:08??ThreadPool.java

?????文件???????1673??2010-02-21?15:50??ThreadPoolTest.java

-----------?---------??----------?-----??----

?????????????????6932????????????????????2


評(píng)論

共有 條評(píng)論