国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java多線程中常見的幾個(gè)問題

2019-11-15 00:01:01
字體:
供稿:網(wǎng)友
java多線程中常見的幾個(gè)問題

我們都知道,在java中要想實(shí)現(xiàn)多線程,有兩種手段,一種是繼續(xù)Thread類,另外一種是實(shí)現(xiàn)Runable接口。  1.進(jìn)程和線程的區(qū)別是什么?  進(jìn)程是執(zhí)行著的應(yīng)用程序,而線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行序列。一個(gè)進(jìn)程可以有多個(gè)線程。線程又叫做輕量級(jí)進(jìn)程。  2.創(chuàng)建線程有幾種不同的方式?你喜歡哪一種?為什么?有三種方式可以用來創(chuàng)建線程:(1)繼承Thread類 (2)實(shí)現(xiàn)Runnable接口 (3)應(yīng)用程序可以使用Executor框架來創(chuàng)建線程池實(shí)現(xiàn)Runnable接口這種方式更受歡迎,因?yàn)檫@不需要繼承Thread類。在應(yīng)用設(shè)計(jì)中已經(jīng)繼承了別的對(duì)象的情況下,這需要多繼承(而Java不支持多繼承),只能實(shí)現(xiàn)接口。同時(shí),線程池也是非常高效的,很容易實(shí)現(xiàn)和使用。  3.概括的解釋下線程的幾種可用狀態(tài)。線程在執(zhí)行過程中,可以處于下面幾種狀態(tài): 就緒(Runnable):線程準(zhǔn)備運(yùn)行,不一定立馬就能開始執(zhí)行。 運(yùn)行中(Running):進(jìn)程正在執(zhí)行線程的代碼。 等待中(Waiting):線程處于阻塞的狀態(tài),等待外部的處理結(jié)束。 睡眠中(Sleeping):線程被強(qiáng)制睡眠。 I/O阻塞(Blocked on I/O):等待I/O操作完成。 同步阻塞(Blocked on Synchronization):等待獲取鎖。 死亡(Dead):線程完成了執(zhí)行。  4.同步方法和同步代碼塊的區(qū)別是什么?  在Java語言中,每一個(gè)對(duì)象有一把鎖。線程可以使用synchronized關(guān)鍵字來獲取對(duì)象上的鎖。synchronized關(guān)鍵字可應(yīng)用在方法級(jí)別(粗粒度鎖)或者是代碼塊級(jí)別(細(xì)粒度鎖)。  5.在監(jiān)視器(Monitor)內(nèi)部,是如何做線程同步的?程序應(yīng)該做哪種級(jí)別的同步?  監(jiān)視器和鎖在Java虛擬機(jī)中是一塊使用的。監(jiān)視器監(jiān)視一塊同步代碼塊,確保一次只有一個(gè)線程執(zhí)行同步代碼塊。每一個(gè)監(jiān)視器都和一個(gè)對(duì)象引用相關(guān)聯(lián)。線程在獲取鎖之前不允許執(zhí)行同步代碼。  6.什么是死鎖(deadlock)?  兩個(gè)進(jìn)程都在等待對(duì)方執(zhí)行完畢才能繼續(xù)往下執(zhí)行的時(shí)候就發(fā)生了死鎖。結(jié)果就是兩個(gè)進(jìn)程都陷入了無限的等待中。  7.如何確保N個(gè)線程可以訪問N個(gè)資源同時(shí)又不導(dǎo)致死鎖?  使用多線程的時(shí)候,一種非常簡單的避免死鎖的方式就是:指定獲取鎖的順序,并強(qiáng)制線程按照指定的順序獲取鎖。因此,如果所有的線程都是以同樣的順序加鎖和釋放鎖,就不會(huì)出現(xiàn)死鎖了。


上一篇:線性表簡述

下一篇:對(duì)象死了嗎?

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黔江区| 库车县| 凤山县| 桃园市| 余江县| 江永县| 城固县| 安宁市| 平塘县| 崇信县| 永德县| 夹江县| 曲阜市| 平乐县| 铁岭市| 德令哈市| 弥渡县| 察隅县| 砀山县| 商南县| 夏津县| 新化县| 九寨沟县| 同江市| 万源市| 雷州市| 昭通市| 丹凤县| 原阳县| 万宁市| 丹东市| 黑龙江省| 建昌县| 普兰县| 新密市| 土默特右旗| 彰化市| 彭阳县| 延寿县| 克拉玛依市| 康定县|