当前位置:主页 > 书籍配套资源 > Java编程配套资源
《Java多线程编程核心技术》源代码

《Java多线程编程核心技术》源代码

  • 更新:2022-03-23
  • 大小:4.6 MB
  • 类别:Java编程
  • 作者:高洪岩
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

封面图

目录

  • 前言
  • 第1章Java多线程技能1
  • 1.1进程和多线程的概念及线程的优点1
  • 1.2使用多线程3
  • 1.2.1继承Thread类4
  • 1.2.2实现Runnable接口8
  • 1.2.3实例变量与线程安全9
  • 1.2.4留意i--与System.out.println()的异常14
  • 1.3currentThread()方法16
  • 1.4isAlive()方法18
  • 1.5sleep()方法20
  • 1.6getId()方法22
  • 1.7停止线程23
  • 1.7.1停止不了的线程23
  • 1.7.2判断线程是否是停止状态24
  • 1.7.3能停止的线程——异常法27
  • 1.7.4在沉睡中停止30
  • 1.7.5能停止的线程——暴力停止32
  • 1.7.6方法stop()与java.lang.ThreadDeath异常33
  • 1.7.7释放锁的不良后果34
  • 1.7.8使用return停止线程35
  • 1.8暂停线程36
  • 1.8.1suspend与resume方法的使用36
  • 1.8.2suspend与resume方法的缺点——独占38
  • 1.8.3suspend与resume方法的缺点——不同步40
  • 1.9yield方法42
  • 1.10线程的优先级43
  • 1.10.1线程优先级的继承特性43
  • 1.10.2优先级具有规则性44
  • 1.10.3优先级具有随机性47
  • 1.10.4看谁运行得快49
  • 1.11守护线程50
  • 1.12本章小结51
  • 第2章对象及变量的并发访问52
  • 2.1synchronized同步方法52
  • 2.1.1方法内的变量为线程安全53
  • 2.1.2实例变量非线程安全54
  • 2.1.3多个对象多个锁57
  • 2.1.4synchronized方法与锁对象59
  • 2.1.5脏读63
  • 2.1.6synchronized锁重入65
  • 2.1.7出现异常,锁自动释放68
  • 2.1.8同步不具有继承性69
  • 2.2synchronized同步语句块71
  • 2.2.1synchronized方法的弊端72
  • 2.2.2synchronized同步代码块的使用74
  • 2.2.3用同步代码块解决同步方法的弊端76
  • 2.2.4一半异步,一半同步76
  • 2.2.5synchronized代码块间的同步性78
  • 2.2.6验证同步synchronized(this)代码块是锁定当前对象的80
  • 2.2.7将任意对象作为对象监视器82
  • 2.2.8细化验证3个结论91
  • 2.2.9静态同步synchronized方法与synchronized(class)代码块96
  • 2.2.10数据类型String的常量池特性102
  • 2.2.11同步synchronized方法无限等待与解决105
  • 2.2.12多线程的死锁107
  • 2.2.13内置类与静态内置类109
  • 2.2.14内置类与同步:实验1111
  • 2.2.15内置类与同步:实验2113
  • 2.2.16锁对象的改变114
  • 2.3volatile关键字118
  • 2.3.1关键字volatile与死循环118
  • 2.3.2解决同步死循环119
  • 2.3.3解决异步死循环120
  • 2.3.4volatile非原子的特性124
  • 2.3.5使用原子类进行i++操作126
  • 2.3.6原子类也并不完全安全127
  • 2.3.7synchronized代码块有volatile同步的功能130
  • 2.4本章总结132
  • 第3章线程间通信133
  • 3.1等待/通知机制133
  • 3.1.1不使用等待/通知机制实现线程间通信133
  • 3.1.2什么是等待/通知机制135
  • 3.1.3等待/通知机制的实现136
  • 3.1.4方法wait()锁释放与notify()锁不释放143
  • 3.1.5当interrupt方法遇到wait方法146
  • 3.1.6只通知一个线程148
  • 3.1.7唤醒所有线程150
  • 3.1.8方法wait(long)的使用150
  • 3.1.9通知过早152
  • 3.1.10等待wait的条件发生变化155
  • 3.1.11生产者/消费者模式实现158
  • 3.1.12通过管道进行线程间通信:字节流171
  • 3.1.13通过管道进行线程间通信:字符流174
  • 3.1.14实战:等待/通知之交叉备份177
  • 3.2方法join的使用179
  • 3.2.1学习方法join前的铺垫179
  • 3.2.2用join()方法来解决180
  • 3.2.3方法join与异常181
  • 3.2.4方法join(long)的使用183
  • 3.2.5方法join(long)与sleep(long)的区别184
  • 3.2.6方法join()后面的代码提前运行:出现意外 187
  • 3.2.7方法join()后面的代码提前运行:解释意外189
  • 3.3类ThreadLocal的使用191
  • 3.3.1方法get()与null191
  • 3.3.2验证线程变量的隔离性192
  • 3.3.3解决get()返回null问题195
  • 3.3.4再次验证线程变量的隔离性195
  • 3.4类InheritableThreadLocal的使用197
  • 3.4.1值继承197
  • 3.4.2值继承再修改198
  • 3.5本章总结199
  • 第4章Lock的使用200
  • 4.1使用ReentrantLock类200
  • 4.1.1使用ReentrantLock实现同步:测试1200
  • 4.1.2使用ReentrantLock实现同步:测试2202
  • 4.1.3使用Condition实现等待/通知错误用法与解决204
  • 4.1.4正确使用Condition实现等待/通知207
  • 4.1.5使用多个Condition实现通知部分线程:错误用法208
  • 4.1.6使用多个Condition实现通知部分线程:正确用法210
  • 4.1.7实现生产者/消费者模式:一对一交替打印213
  • 4.1.8实现生产者/消费者模式:多对多交替打印214
  • 4.1.9公平锁与非公平锁216
  • 4.1.10方法getHoldCount()、getQueueLength()和getWaitQueueLength()的测试219
  • 4.1.11方法hasQueuedThread()、hasQueuedThreads()和hasWaiters()的测试222
  • 4.1.12方法isFair()、isHeldByCurrentThread()和isLocked()的测试224
  • 4.1.13方法lockInterruptibly()、tryLock()和tryLock(long timeout,TimeUnit unit)的测试226
  • 4.1.14方法awaitUninterruptibly()的使用230
  • 4.1.15方法awaitUntil()的使用232
  • 4.1.16使用Condition实现顺序执行234
  • 4.2使用ReentrantReadWriteLock类236
  • 4.2.1类ReentrantReadWriteLock的使用:读读共享236
  • 4.2.2类ReentrantReadWriteLock的使用:写写互斥237
  • 4.2.3类ReentrantReadWriteLock的使用:读写互斥238
  • 4.2.4类ReentrantReadWriteLock的使用:写读互斥239
  • 4.3本章总结240
  • 第5章定时器Timer241
  • 5.1定时器Timer的使用241
  • 5.1.1方法schedule(TimerTask task, Date time)的测试241
  • 5.1.2方法schedule(TimerTask task, Date firstTime, long period)的测试247
  • 5.1.3方法schedule(TimerTask task, long delay)的测试252
  • 5.1.4方法schedule(TimerTask task, long delay, long period)的测试253
  • 5.1.5方法scheduleAtFixedRate(TimerTask task, Date firstTime, long period)的测试254
  • 5.2本章总结261
  • 第6章单例模式与多线程262
  • 6.1立即加载/“饿汉模式”262
  • 6.2延迟加载/“懒汉模式”263
  • 6.3使用静态内置类实现单例模式271
  • 6.4序列化与反序列化的单例模式实现272
  • 6.5使用static代码块实现单例模式274
  • 6.6使用enum枚举数据类型实现单例模式275
  • 6.7完善使用enum枚举实现单例模式277
  • 6.8本章总结278
  • 第7章拾遗增补279
  • 7.1线程的状态279
  • 7.1.1验证NEW、RUNNABLE和TERMINATED280
  • 7.1.2验证TIMED_WAITING281
  • 7.1.3验证BLOCKED282
  • 7.1.4验证WAITING284
  • 7.2线程组285
  • 7.2.1线程对象关联线程组:1级关联285
  • 7.2.2线程对象关联线程组:多级关联287
  • 7.2.3线程组自动归属特性288
  • 7.2.4获取根线程组288
  • 7.2.5线程组里加线程组289
  • 7.2.6组内的线程批量停止290
  • 7.2.7递归与非递归取得组内对象290
  • 7.3使线程具有有序性291
  • 7.4SimpleDateFormat非线程安全293
  • 7.4.1出现异常293
  • 7.4.2解决异常方法1294
  • 7.4.3解决异常方法2295
  • 7.5线程中出现异常的处理297
  • 7.6线程组内处理异常299
  • 7.7线程异常处理的传递301
  • 7.8本章总结306

资源下载

资源下载地址1:https://pan.baidu.com/s/1XXynfh78XG7g855dLRL4BQ

相关资源

网友留言