注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計JAVA及其相關(guān)Java線程編程

Java線程編程

Java線程編程

定 價:¥52.00

作 者: (美)Paul Hyde著;周良忠譯
出版社: 人民郵電出版社
叢編項:
標(biāo) 簽: JAVA語言 程序設(shè)計

ISBN: 9787115117915 出版時間: 2003-01-01 包裝: 膠版紙
開本: 26cm 頁數(shù): 472 字?jǐn)?shù):  

內(nèi)容簡介

  本書以豐富的實例、由淺至深的方式全面講解如何用Java進(jìn)行多線程編程。全書分三部分。第一部分(第1章~第10章)介紹基礎(chǔ)概念,包括線程、線程組、Swing、線程同步、線程優(yōu)先級、啟動和終止線程、線程間通信等。第二部分(第11章~第18章)介紹一些重要的多線程編程技術(shù),包括自運行對象、異常回調(diào)、線程池、完全超時、擺脫阻塞的I/O狀態(tài)、先進(jìn)先出(FIFO)隊列以及運用類SureStop和BooleanLock等。第三部分為附錄,提供了Thread API和ThreadGroup API的相關(guān)材料。 本書可以幫助具有Java基本編程知識的程序員學(xué)習(xí)多線程編程。

作者簡介

  譯者:周良忠暢銷圖書《C++實踐之路》的譯者周良忠,1970年生。本科畢業(yè)于武漢化工學(xué)院計算機應(yīng)用專業(yè)。1995畢業(yè)于中國科學(xué)院武漢巖土力學(xué)研究所,獲碩士學(xué)位,1997年獲得博士學(xué)位。1998年創(chuàng)辦云巔工作室(http://www.cloudcrown.com),為個人、中小企業(yè)提供專業(yè)軟件定做服務(wù)。近幾年開發(fā)了多款廣受歡迎的共享軟件。精通C++、C#、Java、Perl等開發(fā)語言。2001年開始從事計算機科技圖書的創(chuàng)作和翻譯工作,最新翻譯力作有《C#PrimerPlus中文版》、《C++實踐之路》等。SymbianOS軟件開發(fā)開發(fā):應(yīng)用C++開發(fā)智能手機應(yīng)用程序入門>>更多作品

圖書目錄

第一部分  線    程                  
 第1章  線程簡介 3                  
 1.1  什么是線程 4                  
 1.2  為什么使用多線程 4                  
 1.2.1  與用戶的更佳交互 4                  
 1.2.2  同步動作的模擬 5                  
 1.2.3  利用多處理器 5                  
 1.2.4  等待緩慢I/O操作時完成其他任務(wù) 5                  
 1.2.5  簡化對象模型 6                  
 1.3  不宜采用多線程的場合 7                  
 1.4  Java的內(nèi)置線程支持 7                  
 1.5  易于起步, 難以掌握 7                  
 第2章  一個簡單的雙線程實例 9                  
 2.1  擴(kuò)展java.lang.Thread類 10                  
 2.2  覆蓋run()方法 11                  
 2.3  創(chuàng)建新線程 12                  
 2.4  綜合運用 13                  
 2.5  小結(jié) 14                  
 第3章  創(chuàng)建和啟動線程 15                  
 3.1  使用Thread.currentThread() 16                  
 3.2  線程命名:getName()和setName() 18                  
 3.2.1  使用getName() 18                  
 3.2.2  使用setName() 21                  
 3.3  線程構(gòu)造函數(shù) 22                  
 3.4  激活線程:start()和isAlive() 24                  
 3.5  使用Thread.sleep() 26                  
 3.6  小結(jié) 28                  
 第4章  實現(xiàn)Runnable接口與擴(kuò)展Thread類 30                  
 4.1  可視定時器圖形組件 31                  
 4.2  能擴(kuò)展Thread和JComponent嗎 37                  
 4.3  接口java.lang.Runnable 38                  
 4.4  把Runnable對象傳遞給Thread的構(gòu)造函數(shù) 38                  
 4.5  修改SecondCounter來使用Runnable 39                  
 4.6  檢查SecondCounter的準(zhǔn)確性 45                  
 4.7  提高SecondCounter的準(zhǔn)確性 49                  
 4.8  小結(jié) 54                  
 第5章  完美終止線程 55                  
 5.1  中斷線程:interrupt() 56                  
 5.1.1  中斷休眠線程 58                  
 5.1.2  待決中斷 56                  
 5.1.3  使用isInterrupted() 59                  
 5.1.4  使用Thread.interrupted() 60                  
 5.1.5  使用InterruptedException 61                  
 5.2  掛起和恢復(fù)線程執(zhí)行 63                  
 5.2.1  使用淘汰的方法suspend()和resume() 63                  
 5.2.2  在不恰當(dāng)?shù)臅r候掛起 67                  
 5.2.3  不使用淘汰方法實現(xiàn)掛起和恢復(fù) 70                  
 5.3  終止線程 74                  
 5.3.1  使用淘汰的方法stop() 74                  
 5.3.2  取代stop() 76                  
 5.4  stop(). suspend()和resume()的最佳替代 78                  
 5.5  守護(hù)線程 84                  
 5.6  小結(jié) 86                  
 第6章  線程優(yōu)先化 87                  
 6.1  系統(tǒng)線程優(yōu)先級 88                  
 6.2  線程優(yōu)先級常量 89                  
 6.2.1  Thread.MAX_PRIORITY 89                  
 6.2.2  Thread.MIN_PRIORITY 89                  
 6.2.3  Thread.NORM_PRIORITY 89                  
 6.3  判斷當(dāng)前優(yōu)先級:getPriority() 89                  
 6.4  更改線程的優(yōu)先級:setPriority() 91                  
 6.5  線程狀態(tài) 94                  
 6.6  優(yōu)先級和規(guī)劃 96                  
 6.7  自愿放棄處理器:Thread.yield() 96                  
 6.8  線程規(guī)劃情形 102                  
 6.8.1  情形一:一個高優(yōu)先級線程獨占處理器 102                  
 6.8.2  情形二:所有高優(yōu)先級線程獨占處理器 102                  
 6.8.3  情形三:所有線程均獲得一定的處理器時間 102                  
 6.9  小結(jié) 103                  
 第7章  并發(fā)訪問對象和變量 104                  
 7.1  易變成員變量修飾符 105                  
 7.2  同步方法修飾符 110                  
 7.2.1  兩個線程同時位于一個對象的同一個方法中 110                  
 7.2.2  同一時刻一個線程 112                  
 7.2.3  兩個線程, 兩個對象 115                  
 7.2.4  避免對象的意外崩潰 117                  
 7.2.5  對象處于不一致狀態(tài)時, 推遲對它的訪問 121                  
 7.3  同步語句塊 126                  
 7.3.1  減少持有鎖的時間 126                  
 7.3.2  鎖定任意對象, 而非僅僅鎖定當(dāng)前對象 127                  
 7.3.3  把向量內(nèi)容安全地復(fù)制到數(shù)組 128                  
 7.4  靜態(tài)同步方法 130                  
 7.5  在同步語句中使用類級別鎖 134                  
 7.6  同步化和集合API 136                  
 7.6.1  封裝集合, 使之同步化 136                  
 7.6.2  安全地把列表中的內(nèi)容復(fù)制到數(shù)組 137                  
 7.6.3  安全遍歷集合元素 139                  
 7.7  死鎖 141                  
 7.8  加速并發(fā)訪問 145                  
 7.9  小結(jié) 145                  
 第8章  線程間通信 147                  
 8.1  線程間通信的必要性 148                  
 8.2  等待/通知機制 148                  
 8.2.1  最小規(guī)模的等待/通知 148                  
 8.2.2  典型等待/通知 150                  
 8.2.3  運用同步方法的等待/通知 151                  
 8.3  用于等待/通知的對象API 153                  
 8.3.1  notify() 153                  
 8.3.2  notifyAll() 153                  
 8.3.3  wait() 153                  
 8.3.4  wait(long) 154                  
 8.3.5  wait(long, int) 154                  
 8.4  何時使用notifyAll()代替notify() 154                  
 8.5  遺漏通知 155                  
 8.5.1  MissedNotify 155                  
 8.5.2  MissedNotifyFix 159                  
 8.6  早期通知 163                  
 8.6.1  EarlyNotify 164                  
 8.6.2  EarlyNotifyFix 167                  
 8.7  示例CubbyHole 171                  
 8.8  使用join()等待線程的消亡 177                  
 8.8.1  join() 177                  
 8.8.2  join(long) 177                  
 8.8.3  join(long, int) 177                  
 8.8.4  JoinDemo 178                  
 8.9  使用管道在線程間流動數(shù)據(jù) 181                  
 8.9.1  PipedBytes 182                  
 8.9.2  PipedCharacters 185                  
 8.10  使用ThreadLocal和InheritableThreadLocal 188                  
 8.10.1  ThreadLocal API 189                  
 8.10.2  ThreadID 189                  
 8.10.3  InheritableThreadLocal API 192                  
 8.10.4  InheritableThreadID 192                  
 8.11  小結(jié) 198                  
 第9章  線程和Swing 199                  
 9.1  為什么Swing工具包不是多線程安全 200                  
 9.2  使用SwingUtilities.invokeAndWait() 201                  
 9.3  使用SwingUtilities.invokeLater() 204                  
 9.4  使用SwingUtilities.isEventDispatchThread() 207                  
 9.5  何時不需要invokeAndWait()和invokeLater() 207                  
 9.6  在GUI設(shè)置中使用工作線程的必需性 208                  
 9.7  使用工作線程減輕事件線程的負(fù)擔(dān) 213                  
 9.8  在自定義組件中滾動文本 220                  
 9.9  動畫顯示一系列圖像 225                  
 9.10  在JLabel上顯示流逝的時間 229                  
 9.11  在容器內(nèi)浮動組件 233                  
 9.12  小結(jié) 238                  
 第10章  線程組 239                  
 10.1  什么是線程組 240                  
 10.2  使用getParent() 241                  
 10.3  查找線程組的子組 241                  
 10.4  使用Thread的getThreadGroup()方法 242                  
 10.5  查找線程組中的所有線程 242                  
 10.6  理解線程組的安全性 242                  
 10.7  使用setMaxPriority()和getMaxPriority() 243                  
 10.8  使用interrupt() 243                  
 10.9  淘汰的方法:stop(). suspend()和resume() 243                  
 10.10  類ThreadViewer 243                  
 10.11  小結(jié) 252                  
 第二部分  技    術(shù)                  
 第11章  自運行對象 255                  
 11.1  簡單自運行類 256                  
 11.2  使用內(nèi)部類來隱藏run() 259                  
 11.3  要考慮的額外功能 261                  
 11.4  小結(jié) 267                  
 第12章  異?;卣{(diào) 268                  
 12.1  ExceptionListener接口 269                  
 12.2  支持ExceptionListener的輔助方法 269                  
 12.3  小結(jié) 276                  
 第13章  線程池 277                  
 13.1  線程池的好處 278                  
 13.2  線程池的考慮與開銷 278                  
 13.3  泛型線程池:ThreadPool 279                  
 13.4  專門工作線程池:HttpServer 288                  
 13.4.1  類HttpServer 289                  
 13.4.2  類HttpWorker 296                  
 13.4.3  服務(wù)文件示例 305                  
 13.4.4  用3個工作線程運行HttpServer 307                  
 13.4.5  用10個工作線程來運行HttpServer 309                  
 13.5  小結(jié) 310                  
 第14章  等待完全超時 311                  
 14.1  意外提前返回 312                  
 14.2  判斷是否應(yīng)當(dāng)再次調(diào)用wait() 315                  
 14.3  通用等待-直到模式 319                  
 14.4  小結(jié) 325                  
 第15章  擺脫阻塞I/O狀態(tài)的束縛 326                  
 15.1  read()方法忽略中斷和終止請求 327                  
 15.2  關(guān)閉流來擺脫阻塞狀態(tài) 329                  
 15.2.1  類CalcServer與擺脫阻塞的accept() 330                  
 15.2.2  類CalcWorker與擺脫阻塞的read() 333                  
 15.2.3  類CalcClient 336                  
 15.2.4  運行CalcClient的輸出 337                  
 15.3  被中斷時拋出InterruptedIOException 338                  
 15.3.1  類ThreadedInputStream 338                  
 15.3.2  類BufferedThreadedInputStream 347                  
 15.4  針對可中斷I/O使用BufferedThreadedInputStream 349                  
 15.5  小結(jié) 354                  
 第16章  SureStop的運用 356                  
 16.1  使用SureStop的原則 357                  
 16.2  SureStop類 357                  
 16.3  使用SureStopVerbose的分析 363                  
 16.4  用SureStopDemo演示SureStop的工作方式 369                  
 16.5  小結(jié) 374                  
 第17章  類BooleanLock的運用 375                  
 17.1  背景 376                  
 17.2  類BooleanLock 376                  
 17.3  使用BooleanLock在線程間發(fā)送信號 380                  
 17.4  避免阻塞于同步 382                  
 17.4.1  SyncBlock 382                  
 17.4.2  InterruptibleSyncBlock 385                  
 17.5  使用TransitionDetector檢測Value的短暫變化 388                  
 17.6  小結(jié) 394                  
 第18章  先進(jìn)先出(FIFO)隊列 395                  
 18.1  FIFO隊列如何工作 396                  
 18.2  用數(shù)組實現(xiàn)FIFO 397                  
 18.3  用Java的簡單實現(xiàn):SimpleObjectFIFO 399                  
 18.4  對象引用的一個擴(kuò)展FIFO隊列:ObjectFIFO 405                  
 18.5  字節(jié)的FIFO隊列:ByteFIFO 419                  
 18.6  小結(jié) 432                  
 第三部分  附    錄                  
 附錄A  Thread API 435                  
 成員變量 436                  
 Thread.MAX_PRIORITY 436                  
 Thread.MIN_PRIORITY 436                  
 Thread.NORM_PRIORITY 436                  
 構(gòu)造函數(shù) 437                  
 Thread(ThreadGroup, Runnable, String) 437                  
 Thread(ThreadGroup, Runnable) 437                  
 Thread(ThreadGroup, String) 437                  
 Thread(Runnable, String) 437                  
 Thread(Runnable) 438                  
 Thread(String) 438                  
 Thread() 438                  
 靜態(tài)方法 438                  
 Thread.activeCount() 438                  
 Thread.currentThread() 438                  
 Thread.dumpStack() 438                  
 Thread.enumerate() 439                  
 Thread.interrupted() 439                  
 Thread.sleep(long) 439                  
 Thread.sleep(long, int) 439                  
 Thread.yield() 439                  
 實例方法 440                  
 checkAccess() 440                  
 destroy() 440                  
 getContextClassLoader() 440                  
 getName() 440                  
 getPriority() 440                  
 getThreadGroup() 440                  
 interrupt() 441                  
 isAlive() 441                  
 isDaemon() 441                  
 isInterrupted() 441                  
 join() 441                  
 join(long) 441                  
 join(long, int) 442                  
 run() 442                  
 setContextClassLoader(ClassLoader) 442                  
 setDaemon(boolean) 442                  
 setName(String) 442                  
 setPriority(int) 443                  
 start() 443                  
 toString() 443                  
 被淘汰的方法 443                  
 countStackFrames() 443                  
 resume() 443                  
 stop() 444                  
 stop(Throwable) 444                  
 suspend() 444                  
 附錄B  ThreadGroup API 445                  
 構(gòu)造函數(shù) 446                  
 ThreadGroup(ThreadGroup, String) 446                  
 ThreadGroup(String) 446                  
 實例方法 447                  
 activeCount() 447                  
 activeGroupCount() 447                  
 checkAccess() 447                  
 destroy() 447                  
 enumerate(Thread[], boolean) 447                  
 enumerate(Thread[]) 448                  
 enumerate(ThreadGroup[], boolean) 448                  
 enumerate(ThreadGroup[]) 448                  
 getMaxPriority() 448                  
 getName() 448                  
 getParent() 448                  
 interrupt() 449                  
 isDaemon() 449                  
 isDestroyed() 449                  
 list() 449                  
 parentOf(ThreadGroup) 449                  
 setDaemon(boolean) 449                  
 setMaxPriority(int) 449                  
 toString() 450                  
 uncaughtException(Thread, Throwable) 450                  
 被淘汰的方法 450                  
 allowThreadSuspension(boolean) 450                  
 resume() 450                  
 stop() 450                  
 suspend() 451                  
 索引 452                  

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號