图书介绍

Java线程编程PDF|Epub|txt|kindle电子书版本网盘下载

Java线程编程
  • (美)Paul Hyde著;周良忠译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115117918
  • 出版时间:2003
  • 标注页数:454页
  • 文件大小:38MB
  • 文件页数:473页
  • 主题词:JAVA语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Java线程编程PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 线程3

第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操作时完成其他任务5

1.2.5 简化对象模型6

1.3 不宜采用多线程的场合7

1.4 Java的内置线程支持7

1.5 易于起步,难以掌握7

第2章 一个简单的双线程实例9

2.1 扩展java.lang.Thread类10

2.2 覆盖run()方法11

2.3 创建新线程12

2.4 综合运用13

2.5 小结14

第3章 创建和启动线程15

3.1 使用Thread.currentThread()16

3.2 线程命名:getName()和setName()18

3.2.1 使用getName()18

3.2.2 使用setName()21

3.3 线程构造函数22

3.4 激活线程:start()和isAlive()24

3.5 使用Thread.sleép()26

3.6 小结28

第4章 实现Runnable接口与扩展Thread类30

4.1 可视定时器图形组件31

4.2 能扩展Thread和JComponent吗37

4.3 接口java.lang.Runnable38

4.4 把Runnable对象传递给Thread的构造函数38

4.5 修改SecondCounter来使用Runnable39

4.6 检查SecondCounter的准确性45

4.7 提高SecondCounter的准确性49

4.8 小结54

第5章 完美终止线程55

5.1 中断线程:interrupt()56

5.1.2 待决中断56

5.1.1 中断休眠线程58

5.1.3 使用isInterrupted()59

5.1.4 使用Thread.interrupted()60

5.1.5 使用InterruptedException61

5.2.1 使用淘汰的方法suspend()和resume()63

5.2 挂起和恢复线程执行63

5.2.2 在不恰当的时候挂起67

5.2.3 不使用淘汰方法实现挂起和恢复70

5.3 终止线程74

5.3.1 使用淘汰的方法stop()74

5.3.2 取代stop()76

5.4 stop()、suspend()和resume()的最佳替代78

5.5 守护线程84

5.6 小结86

第6章 线程优先化87

6.1 系统线程优先级88

6.2 线程优先级常量89

6.2.1 Thread.MAX_PRIORITY89

6.2.2 Thread.MIN_PRIORITY89

6.2.3 Thread.NORM_PRIORITY89

6.3 判断当前优先级:getPriority()89

6.4 更改线程的优先级:setPriority()91

6.5 线程状态94

6.7 自愿放弃处理器:Thread.yield()96

6.6 优先级和规划96

6.8 线程规划情形102

6.8.1 情形一:一个高优先级线程独占处理器102

6.8.2 情形二:所有高优先级线程独占处理器102

6.8.3 情形三:所有线程均获得一定的处理器时间102

6.9 小结103

第7章 并发访问对象和变量104

7.1 易变成员变量修饰符105

7.2.1 两个线程同时位于一个对象的同一个方法中110

7.2 同步方法修饰符110

7.2.2 同一时刻一个线程112

7.2.3 两个线程,两个对象115

7.2.4 避免对象的意外崩溃117

7.2.5 对象处于不一致状态时,推迟对它的访问121

7.3 同步语句块126

7.3.1 减少持有锁的时间126

7.3.2 锁定任意对象,而非仅仅锁定当前对象127

7.3.3 把向量内容安全地复制到数组128

7.4 静态同步方法130

7.5 在同步语句中使用类级别锁134

7.6 同步化和集合API136

7.6.1 封装集合,使之同步化136

7.6.2 安全地把列表中的内容复制到数组137

7.6.3 安全遍历集合元素139

7.7 死锁141

7.9 小结145

7.8 加速并发访问145

第8章 线程间通信147

8.1 线程间通信的必要性148

8.2 等待/通知机制148

8.2.1 最小规模的等待/通知148

8.2.2 典型等待/通知150

8.2.3 运用同步方法的等待/通知151

8.3.3 wait()153

8.3.2 notifyAll()153

8.3.1 notify()153

8.3 用于等待/通知的对象API153

8.3.4 wait(long)154

8.3.5 wait(long,int)154

8.4 何时使用notifyAll()代替notify()154

8.5 遗漏通知155

8.5.1 MissedNotify155

8.5.2 MissedNotifyFix159

8.6 早期通知163

8.6.1 EarlyNotify164

8.6.2 EarlyNotifyFix167

8.7 示例CubbyHole171

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 JoinDemo178

8.9 使用管道在线程间流动数据181

8.9.1 PipedBytes182

8.9.2 PipedCharacters185

8.10 使用ThreadLocal和InheritableThreadLocal188

8.10.1 ThreadLocal API189

8.10.2 ThreadID189

8.10.3 InheritableThreadLocal API192

8.10.4 InheritableThreadID192

8.11 小结198

第9章 线程和Swing199

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设置中使用工作线程的必需性208

9.7 使用工作线程减轻事件线程的负担213

9.8 在自定义组件中滚动文本220

9.9 动画显示一系列图像225

9.10 在JLabel上显示流逝的时间229

9.11 在容器内浮动组件233

9.12 小结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.10 类ThreadViewer243

10.9 淘汰的方法:stop()、suspend()和resume()243

10.7 使用setMaxPriority()和getMaxPriority()243

10.8 使用interrupt()243

10.11 小结252

第二部分 技术255

第11章 自运行对象255

11.1 简单自运行类256

11.2 使用内部类来隐藏run()259

11.3 要考虑的额外功能261

11.4 小结267

第12章 异常回调268

12.1 ExceptionListener接口269

12.2 支持ExceptionListener的辅助方法269

12.3 小结276

第13章 线程池277

13.1 线程池的好处278

13.2 线程池的考虑与开销278

13.3 泛型线程池:ThreadPool279

13.4 专门工作线程池:HttpServer288

13.4.1 类HttpServer289

13.4.2 类HttpWorker296

13.4.3 服务文件示例305

13.4.4 用3个工作线程运行HttpServer307

13.4.5 用10个工作线程来运行HttpServer309

13.5 小结310

第14章 等待完全超时311

14.1 意外提前返回312

14.2 判断是否应当再次调用wait()315

14.3 通用等待-直到模式319

14.4 小结325

第15章 摆脱阻塞I/O状态的束缚326

15.1 read()方法忽略中断和终止请求327

15.2 关闭流来摆脱阻塞状态329

15.2.1 类CalcServer与摆脱阻塞的accept()330

15.2.2 类CalcWorker与摆脱阻塞的read()333

15.2.3 类CalcClient336

15.2.4 运行CalcClient的输出337

15.3 被中断时抛出InterruptedIOException338

15.3.1 类ThreadedInputStream338

15.3.2 类BufferedThreadedInputStream347

15.4 针对可中断I/O使用BufferedThreadedInputStream349

15.5 小结354

第16章 SureStop的运用356

16.1 使用SureStop的原则357

16.2 SureStop类357

16.3 使用SureStopVerbose的分析363

16.4 用SureStopDemo演示SureStop的工作方式369

16.5 小结374

第17章 类BooleanLock的运用375

17.1 背景376

17.2 类BooleanLock376

17.3 使用BooleanLock在线程间发送信号380

17.4 避免阻塞于同步382

17.4.1 SyncBlock382

17.4.2 InterruptibleSyncBlock385

17.5 使用TransitionDetector检测Value的短暂变化388

17.6 小结394

第18章 先进先出(FIFO)队列395

18.1 FIFO队列如何工作396

18.2 用数组实现FIFO397

18.3 用Java的简单实现:SimpleObjectFIFO399

18.4 对象引用的一个扩展FIFO队列:ObjectFIFO405

18.5 字节的FIFO队列:ByteFIFO419

18.6 小结432

第三部分 附录435

附录A Thread API435

成员变量436

Thread.MAX_PRIORITY436

Thread.MIN_PRIORITY436

Thread.NORM_PRIORITY436

Thread(Runnable,String)437

Thread(ThreadGroup,Runnable)437

Thread(ThreadGroup,String)437

构造函数437

Thread(ThreadGroup,Runnable,String)437

静态方法438

Thread.currentThread()438

Thread.activeCount()438

Thread.dumpStack()438

Thread()438

Thread(String)438

Thread(Runnable)438

Thread.enumerate()439

Thread.interrupted()439

Thread.sleep(long)439

Thread.sleep(long,int)439

Thread.yield()439

getThreadGroup()440

getPriority()440

getName()440

destroy()440

getContextClassLoader()440

checkAccess()440

实例方法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

resume()443

countStackFrames()443

被淘汰的方法443

start()443

setPriority(int)443

toString()443

stop()444

stop(Throwable)444

suspend()444

附录B ThreadGroup API445

ThreadGroup(ThreadGroup,String)446

ThreadGroup(String)446

构造函数446

实例方法447

activeCount()447

activeGroupCount()447

checkAccess()447

destroy()447

enumerate(Thread[],boolean)447

getParent()448

getName()448

getMaxPriority()448

enumerate(ThreadGroup[])448

enumerate(Thread[])448

enumerate(ThreadGroup[],boolean)448

list()449

setDaemon(boolean)449

parentOf(ThreadGroup)449

setMaxPriority(int)449

isDestroyed()449

isDaemon()449

interrupt()449

toString()450

uncaughtException(Thread,Throwable)450

被淘汰的方法450

allowThreadSuspension(boolean)450

resume()450

stop()450

suspend()451

索引452

热门推荐