电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

創(chuàng)建Java中的線(xiàn)程池

瀏覽:6日期:2024-07-01 13:05:39
內(nèi)容: 線(xiàn)程是Java的一大特性,它可以是給定的指令序列、給定的方法中定義的變量或者一些共享數(shù)據(jù)(類(lèi)一級(jí)的變量)。在Java中每個(gè)線(xiàn)程有自己的堆棧和程序計(jì)數(shù)器(PC),其中堆棧是用來(lái)跟蹤線(xiàn)程的上下文(上下文是當(dāng)線(xiàn)程執(zhí)行到某處時(shí),當(dāng)前的局部變量的值),而程序計(jì)數(shù)器則用來(lái)跟蹤當(dāng)前線(xiàn)程正在執(zhí)行的指令。 在通常情況下,一個(gè)線(xiàn)程不能訪(fǎng)問(wèn)另外一個(gè)線(xiàn)程的堆棧變量,而且這個(gè)線(xiàn)程必須處于如下?tīng)顟B(tài)之一: 1.排隊(duì)狀態(tài)(Ready),在用戶(hù)創(chuàng)建了一個(gè)線(xiàn)程以后,這個(gè)線(xiàn)程不會(huì)立即運(yùn)行。當(dāng)線(xiàn)程中的方法start()被調(diào)用時(shí),這個(gè)線(xiàn)程就會(huì)進(jìn)行排隊(duì)狀態(tài),等待調(diào)度程序?qū)⑺D(zhuǎn)入運(yùn)行狀態(tài)(Running)。當(dāng)一個(gè)進(jìn)程被執(zhí)行后它也可以進(jìn)行排隊(duì)狀態(tài)。如果調(diào)度程序允許的話(huà),通過(guò)調(diào)用方法yield()就可以將進(jìn)程放入排隊(duì)狀態(tài)。 2.運(yùn)行狀態(tài)(Running),當(dāng)調(diào)度程序?qū)PU的運(yùn)行時(shí)間分配給一個(gè)線(xiàn)程,這個(gè)線(xiàn)程就進(jìn)入了運(yùn)行狀態(tài)開(kāi)始運(yùn)行。 3.等待狀態(tài)(Waiting),很多原因都可以導(dǎo)致線(xiàn)程處于等待狀態(tài),例如線(xiàn)程執(zhí)行過(guò)程中被暫停,或者是等待I/O請(qǐng)求的完成而進(jìn)入等待狀態(tài)。 在Java中不同的線(xiàn)程具有不同的優(yōu)先級(jí),高優(yōu)先級(jí)的線(xiàn)程可以安排在低優(yōu)先級(jí)線(xiàn)程之前完成。如果多個(gè)線(xiàn)程具有相同的優(yōu)先級(jí),Java會(huì)在不同的線(xiàn)程之間切換運(yùn)行。一個(gè)應(yīng)用程序可以通過(guò)使用線(xiàn)程中的方法setPriority()來(lái)設(shè)置線(xiàn)程的優(yōu)先級(jí),使用方法getPriority()來(lái)獲得一個(gè)線(xiàn)程的優(yōu)先級(jí)。 線(xiàn)程的生命周期一個(gè)線(xiàn)程的的生命周期可以分成兩階段:生存(Alive)周期和死亡(Dead)周期,其中生存周期又包括運(yùn)行狀態(tài)(Running)和等待狀態(tài)(Waiting)。當(dāng)創(chuàng)建一個(gè)新線(xiàn)程后,這個(gè)線(xiàn)程就進(jìn)入了排隊(duì)狀態(tài)(Ready),當(dāng)線(xiàn)程中的方法start()被調(diào)用時(shí),線(xiàn)程就進(jìn)入生存周期,這時(shí)它的方法isAlive()始終返回真值,直至線(xiàn)程進(jìn)入死亡狀態(tài)。 線(xiàn)程的實(shí)現(xiàn)有兩種方法可以實(shí)現(xiàn)線(xiàn)程,一種是擴(kuò)展java.lang.Thread類(lèi),另一種是通過(guò)java.lang.Runnable接口。 Thread類(lèi)封裝了線(xiàn)程的行為。要?jiǎng)?chuàng)建一個(gè)線(xiàn)程,必須創(chuàng)建一個(gè)從Thread類(lèi)擴(kuò)展出的新類(lèi)。由于在Thread類(lèi)中方法run()沒(méi)有提供任何的操作,因此,在創(chuàng)建線(xiàn)程時(shí)用戶(hù)必須覆蓋方法run()來(lái)完成有用的工作。當(dāng)線(xiàn)程中的方法start()被調(diào)用時(shí),方法run()再被調(diào)用。下面的代碼就是通過(guò)擴(kuò)展Thread類(lèi)來(lái)實(shí)現(xiàn)線(xiàn)程: import java.awt.*;class Sample1{ public static void main(String[] args){ Mythread test1=new Mythread(1); Mythread test2=new Mythread(2); test1.start(); test2.start(); }}class Mythread extends Thread { int id; Mythread(int i) { id=i;} public void run() { int i=0; while(id+i==1){ try {sleep(1000); } catch(InterruptedException e) {} } System.out.println(“The id is +id);} 通常當(dāng)用戶(hù)希望一個(gè)類(lèi)能運(yùn)行在自己的線(xiàn)程中,同時(shí)也擴(kuò)展其它某些類(lèi)的特性時(shí),就需要借助運(yùn)行Runnable接口來(lái)實(shí)現(xiàn)。Runnable接口只有一個(gè)方法run()。不論什么時(shí)候創(chuàng)建了一個(gè)使用Runnable接口的類(lèi),都必須在類(lèi)中編寫(xiě)run()方法來(lái)覆蓋接口中的run()方法。例如下面的代碼就是通過(guò)Runnable接口實(shí)現(xiàn)的線(xiàn)程: import java.awt.*;import java.applet.Applet;public class Bounce extends Applet implements Runnable{ static int r=30; static int x=100; static int y=30; Thread t; public void init() { t = new Thread(this); t.start(); } public void run() { int y1=+1; int i=1; int sleeptime=10; while(true) { y+=(i*y); if(y-rgetSize().height) y1*=-1; try{ t.sleep(sleeptime); }catch(InterruptedException e){ } } }} 為什么要使用線(xiàn)程池在Java中,如果每當(dāng)一個(gè)請(qǐng)求到達(dá)就創(chuàng)建一個(gè)新線(xiàn)程,開(kāi)銷(xiāo)是相當(dāng)大的。在實(shí)際使用中,每個(gè)請(qǐng)求創(chuàng)建新線(xiàn)程的服務(wù)器在創(chuàng)建和銷(xiāo)毀線(xiàn)程上花費(fèi)的時(shí)間和消耗的系統(tǒng)資源,甚至可能要比花在處理實(shí)際的用戶(hù)請(qǐng)求的時(shí)間和資源要多得多。除了創(chuàng)建和銷(xiāo)毀線(xiàn)程的開(kāi)銷(xiāo)之外,活動(dòng)的線(xiàn)程也需要消耗系統(tǒng)資源。如果在一個(gè)JVM里創(chuàng)建太多的線(xiàn)程,可能會(huì)導(dǎo)致系統(tǒng)由于過(guò)度消耗內(nèi)存或“切換過(guò)度而導(dǎo)致系統(tǒng)資源不足。為了防止資源不足,服務(wù)器應(yīng)用程序需要一些辦法來(lái)限制任何給定時(shí)刻處理的請(qǐng)求數(shù)目,盡可能減少創(chuàng)建和銷(xiāo)毀線(xiàn)程的次數(shù),特別是一些資源耗費(fèi)比較大的線(xiàn)程的創(chuàng)建和銷(xiāo)毀,盡量利用已有對(duì)象來(lái)進(jìn)行服務(wù),這就是“池化資源技術(shù)產(chǎn)生的原因。 線(xiàn)程池主要用來(lái)解決線(xiàn)程生命周期開(kāi)銷(xiāo)問(wèn)題和資源不足問(wèn)題。通過(guò)對(duì)多個(gè)任務(wù)重用線(xiàn)程,線(xiàn)程創(chuàng)建的開(kāi)銷(xiāo)就被分?jǐn)偟搅硕鄠€(gè)任務(wù)上了,而且由于在請(qǐng)求到達(dá)時(shí)線(xiàn)程已經(jīng)存在,所以消除了線(xiàn)程創(chuàng)建所帶來(lái)的延遲。這樣,就可以立即為請(qǐng)求服務(wù),使應(yīng)用程序響應(yīng)更快。另外,通過(guò)適當(dāng)?shù)卣{(diào)整線(xiàn)程池中的線(xiàn)程數(shù)目可以防止出現(xiàn)資源不足的情況。 創(chuàng)建一個(gè)線(xiàn)程池一個(gè)比較簡(jiǎn)單的線(xiàn)程池至少應(yīng)包含線(xiàn)程池管理器、工作線(xiàn)程、任務(wù)隊(duì)列、任務(wù)接口等部分。其中線(xiàn)程池管理器(ThreadPool Manager)的作用是創(chuàng)建、銷(xiāo)毀并管理線(xiàn)程池,將工作線(xiàn)程放入線(xiàn)程池中;工作線(xiàn)程是一個(gè)可以循環(huán)執(zhí)行任務(wù)的線(xiàn)程,在沒(méi)有任務(wù)時(shí)進(jìn)行等待;任務(wù)隊(duì)列的作用是提供一種緩沖機(jī)制,將沒(méi)有處理的任務(wù)放在任務(wù)隊(duì)列中;任務(wù)接口是每個(gè)任務(wù)必須實(shí)現(xiàn)的接口,主要用來(lái)規(guī)定任務(wù)的入口、任務(wù)執(zhí)行完后的收尾工作、任務(wù)的執(zhí)行狀態(tài)等,工作線(xiàn)程通過(guò)該接口調(diào)度任務(wù)的執(zhí)行。下面的代碼實(shí)現(xiàn)了創(chuàng)建一個(gè)線(xiàn)程池,以及從線(xiàn)程池中取出線(xiàn)程的操作: public class ThreadPool{ private Stack threadpool = new Stack(); private int poolSize; private int currSize=0; public void setSize(int n) { poolSize = n; } public void run() { for(int i=0;i
標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 培训一点通 - 合肥驾校 - 合肥新亚驾校 - 合肥八一驾校 | 温室大棚建设|水肥一体化|物联网系统 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 厌氧反应器,IC厌氧反应器,厌氧三相分离器-山东创博环保科技有限公司 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 烟台游艇培训,威海游艇培训-烟台市邮轮游艇行业协会 | 锤式粉碎机,医药粉碎机,锥式粉碎机-无锡市迪麦森机械制造有限公司 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 船老大板材_浙江船老大全屋定制_船老大官网 | 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 学习安徽网| 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 无锡网站建设_企业网站定制-网站制作公司-阿凡达网络 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 牛皮纸|牛卡纸|进口牛皮纸|食品级牛皮纸|牛皮纸厂家-伽立实业 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 最新电影-好看的电视剧大全-朝夕电影网 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 |