<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 4,comments - 30,trackbacks - 0

    1、java中有幾種方法可以實現一個線程?用什么關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?

      答:有兩種實現方法,分別是繼承Thread類與實現Runnable接口

      用synchronized關鍵字修飾同步方法

      反對使用stop(),是因為它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處于一種不連貫狀態,那么其他線程能在那種狀態下檢查和修 改它們。結果很難檢查出真正的問題所在。suspend()方法容易發生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲 得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖 定的資源,就會造成死鎖。所以不應該使用suspend(),而應在自己的Thread類中置入一個標志,指出線程應該活動還是掛起。若標志指出線程應該 掛起,便用wait()命其進入等待狀態。若標志指出線程應當恢復,則用一個notify()重新啟動線程。

    2、sleep() 和 wait() 有什么區別?

      答:sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。

      wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。

    3、同步和異步有何異同,在什么情況下分別使用他們?舉例說明。

      答:如果數據將在線程間共享。例如正在寫的數據以后可能被另一個線程讀到,或者正在讀的數據可能已經被另一個線程寫過了,那么這些數據就是共享數據,必須進行同步存取。

      當應用程序在對象上調用了一個需要花費很長時間來執行的方法,并且不希望讓程序等待方法的返回時,就應該使用異步編程,在很多情況下采用異步途徑往往更有效率。

    4、啟動一個線程是用run()還是start()?

      答:啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態,這意味著它可以由JVM調度并執行。這并不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。

    5、當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?

      答:不能,一個對象的一個synchronized方法只能由一個線程訪問。

    6、請說出你所知道的線程同步的方法。

      答:wait():使一個線程處于等待狀態,并且釋放所持有的對象的lock。

      sleep():使一個正在運行的線程處于睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。

      notify():喚醒一個處于等待狀態的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。

      Allnotity():喚醒所有處入等待狀態的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。

    7、多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么?

      答:多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口
    同步的實現方面有兩種,分別是synchronized,wait與notify

    8、線程的基本概念、線程的基本狀態以及狀態之間的關系

      答:線程指在程序執行過程中,能夠執行程序代碼的一個執行單位,每個程序至少都有一個線程,也就是程序本身。

      Java中的線程有四種狀態分別是:運行、就緒、掛起、結束

    9、簡述synchronized和java.util.concurrent.locks.Lock的異同 ?

      答:主要相同點:Lock能完成synchronized所實現的所有功能

      主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。

    posted on 2007-08-30 11:38 蠻哥♂楓 閱讀(3195) 評論(4)  編輯  收藏 所屬分類: Java

    FeedBack:
    # re: java面試精品全集[線程部分][未登錄]
    2008-02-25 11:37 | java
    good  回復  更多評論
      
    # re: java面試精品全集[線程部分]
    2009-04-23 10:04 | landor
    很好,多謝  回復  更多評論
      
    # re: java面試精品全集[線程部分]
    2010-03-11 20:33 | yaolei
    第5題答案不對。要看另一個方法是否同步,同步鎖是什么。

    第9題:Lock有比義ynchronized更精確的線程語義和更好的性能。
    “更精確的線程語義“,這是什么意思?難道synchronized沒有精確的線程語義。
    至于更好的性能也要看是在什么條件下吧。  回復  更多評論
      
    # re: java面試精品全集[線程部分]
    2010-07-01 09:42 | fxbird
    wait和同步有什么關系?
    我覺得只有synchronized和同步有關系。  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品无码你懂的| 香蕉大伊亚洲人在线观看| baoyu777永久免费视频 | 亚洲youwu永久无码精品| 亚洲美女视频免费| 久久久久亚洲精品无码系列| 国产精品偷伦视频免费观看了| 亚洲第一页日韩专区| 亚洲卡一卡二卡乱码新区| 日韩免费一区二区三区在线播放| 亚洲精品视频在线免费| 日本zzzzwww大片免费| 亚洲国产超清无码专区| 可以免费看黄视频的网站| 亚洲伊人久久大香线蕉在观| 99精品国产免费久久久久久下载 | 大妹子影视剧在线观看全集免费| 亚洲天堂在线视频| 亚洲日韩一中文字暮| 在线观看免费成人| 亚洲av无码兔费综合| 亚洲AV无码专区日韩| fc2成年免费共享视频18| 国产国拍精品亚洲AV片| 国产免费一区二区视频| 久久亚洲中文字幕精品有坂深雪| 9277手机在线视频观看免费| 亚洲午夜精品一区二区公牛电影院| 久久久久久国产a免费观看黄色大片 | 国产成人亚洲精品蜜芽影院| a毛片成人免费全部播放| 国产亚洲成归v人片在线观看| 中国人免费观看高清在线观看二区| 日韩亚洲欧洲在线com91tv| 免费福利电影在线观看| 亚洲第一精品电影网| 亚洲免费视频播放| 亚洲人成网站看在线播放| 免费国产成人α片| 亚洲综合色一区二区三区小说| 野花高清在线观看免费完整版中文|