• Java多线程编程核心技术(第3版)
  • Java多线程编程核心技术(第3版)
21年品牌 40万+商家 超1.5亿件商品

Java多线程编程核心技术(第3版)

①全新正版,现货速发,7天无理由退换货②天津、成都、无锡、广东等多仓就近发货,订单最迟48小时内发出③无法指定快递④可开电子发票,不清楚的请咨询客服。

91.43 7.1折 129 全新

库存3件

浙江嘉兴
认证卖家担保交易快速发货售后保障

作者高洪岩 著

出版社机械工业出版社

ISBN9787111698586

出版时间2022-01

装帧平装

开本16开

定价129元

货号31338962

上书时间2024-10-12

倒爷图书专营店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介



目录
前 言<br/>第1章 Java多线程技能  1<br/>1.1 进程和线程的定义及多线程的优点  1<br/>1.2 使用多线程  5<br/>1.2.1 继承Thread类  6<br/>1.2.2 使用常见的3个命令分析线程的信息  8<br/>1.2.3 线程随机性的展现  10<br/>1.2.4 执行start()的顺序不代表执行run()的顺序  12<br/>1.2.5 实现Runnable接口  14<br/>1.2.6 使用Runnable接口实现多线程的优点  15<br/>1.2.7 public Thread(Runnable target)中的target参数  16<br/>1.2.8 实例变量共享导致的“非线程安全”问题与相应的解决方案  18<br/>1.2.9 Servlet技术也会引起“非线程安全”问题  22<br/>1.2.10 留意i--与System.out.println()出现的“非线程安全”问题  25<br/>1.2.11 方法run()被JVM所调用  27<br/>1.3 方法currentThread()  27<br/>1.4 方法isAlive()  30<br/>1.5 方法sleep(long millis)  33<br/>1.6 方法sleep(long millis, int nanos)  34<br/>1.7 方法StackTraceElement[] getStack-Trace()  35<br/>1.8 方法static void dumpStack()  36<br/>1.9 方法Map<Thread, StackTrace-Element[]> getAllStackTraces()  37<br/>1.10 方法getId()  39<br/>1.11 停止线程  40<br/>1.11.1 停止不了的线程  41<br/>1.11.2 判断线程是不是停止状态  42<br/>1.11.3 清除中断状态的使用场景  44<br/>1.11.4 能停止的线程—异常法  48<br/>1.11.5 在sleep状态下停止  51<br/>1.11.6 使用stop()暴力停止线程  53<br/>1.11.7 方法stop()与java.lang.Thread-Death异常  55<br/>1.11.8 使用stop()释放锁导致数据结果不一致  57<br/>1.11.9 使用return;语句停止线程的缺点及相应的解决方案  59<br/>1.12 暂停线程  61<br/>1.12.1 方法suspend()与resume()的使用  62<br/>1.12.2 方法suspend()与resume()的缺点—独占  63<br/>1.12.3 方法suspend()与resume()的缺点—数据不完整  66<br/>1.12.4 使用LockSupport类实现线程暂停与恢复  67<br/>1.13 方法yield()  69<br/>1.14 线程的优先级  70<br/>1.14.1 线程优先级的继承特性  71<br/>1.14.2 线程优先级的规律性  72<br/>1.14.3 线程优先级的随机性  75<br/>1.14.4 看谁跑得快  76<br/>1.15 守护线程  78<br/>1.16 并发与并行  79<br/>1.17 同步与异步  80<br/>1.18 多核CPU不一定比单核CPU运行快  81<br/>1.19 本章小结  82<br/>第2章 对象及变量的并发访问  83<br/>2.1 synchronized同步方法  83<br/>2.1.1 方法内的变量是线程安全的  83<br/>2.1.2 实例变量“非线程安全”问题及解决方案  85<br/>2.1.3 同步synchronized在字节码指令中的原理  88<br/>2.1.4 多个对象多个锁  90<br/>2.1.5 synchronized方法将对象作为锁  92<br/>2.1.6 脏读与解决  97<br/>2.1.7 synchronized锁重入  99<br/>2.1.8 继承环境下的锁重入  100<br/>2.1.9 出现异常,锁自动释放  102<br/>2.1.10 非同步方法?:不使用synchronized重写方法  104<br/>2.2 synchronized同步语句块  106<br/>2.2.1 synchronized方法的弊端  106<br/>2.2.2 synchronized同步代码块的使用  109<br/>2.2.3 用同步代码块解决同步方法的弊端  111<br/>2.2.4 一半异步,一半同步  112<br/>2.2.5 synchronized代码块间的同步性  114<br/>2.2.6 方法println()也是同步的  116<br/>2.2.7 验证synchronized(this)同步代码块是锁定当前对象的  117<br/>2.2.8 将任意对象作为锁  119<br/>2.2.9 多个锁就是异步执行  121<br/>2.2.10 验证方法被调用是随机的  124<br/>2.2.11 不同步导致的逻辑错误与解决方案  125<br/>2.2.12 细化验证3个结论  129<br/>2.2.13 类对象的单例性  134<br/>2.2.14 静态同步?:synchronized方法与synchronized(class)代码块  135<br/>2.2.15 同步synchronized方法可以对类的所有对象实例起作用  139<br/>2.2.16 同步synchronized(class)代码块可以对类的所有对象实例起作用  141<br/>2.2.17 String常量池特性与同步问题  143<br/>2.2.18 synchronized方法无限等待问题与解决方案  146<br/>2.2.19 多线程的死锁  148<br/>2.2.20 内置类与静态内置类  150<br/>2.2.21 内置类与同步?:实验1  153<br/>2.2.22 内置类与同步?:实验2  155<br/>2.2.23 锁对象改变导致异步执行  156<br/>2.2.24 锁对象不改变依然是同步执行  159<br/>2.2.25 同步写法案例比较  161<br/>2.2.26 方法holdsLock(Object obj)的使用  161<br/>2.2.27 临界区  162<br/>2.3 volatile关键字  162<br/>2.3.1 可见性的测试  163<br/>2.3.2 原子性与非原子性的测试  171<br/>2.3.3 禁止代码重排序的测试  179<br/>2.4 本章小结  190<br/>第3章 线程间通信  191<br/>3.1 wait/ notify机制  191<br/>3.1.1 不使用wait/notify机制进行通信的缺点  191<br/>3.1.2 什么是wait/notify机制  194<br/>3.1.3 wait/notify机制的原理  194<br/>3.1.4 方法wait()的基本用法  195<br/>3.1.5 使用代码完整实现wait /notify机制  196<br/>3.1.6 使用wait/notify机制实现线程销毁  198<br/>3.1.7 对业务代码进行封装  200<br/>3.1.8 线程状态的切换  203<br/>3.1.9 方法wait()导致锁立即释放  204<br/>3.1.10 方法sleep()不释放锁  206<br/>3.1.11 方法notify()不立即释放锁  206<br/>3.1.12 方法interrupt()遇到方法wait()  208<br/>3.1.13 方法notify()只通知一个线程  210<br/>3.1.14 方法notifyAll()通知所有线程  212<br/>3.1.15 方法wait(long)的基本用法  213<br/>3.1.16 方法wait(long)自动向下运行的条件  215<br/>3.1.17 通知过早与相应的解决方案  218<br/>3.1.18 等待条件发生变化  220<br/>3.1.19 生产者/消费者模式实现  224<br/>3.1.20 在管道中传递字节流  239<br/>3.1.21 在管道中传递字符流  241<br/>3.1.22 利用wait/notify机制实现交叉备份  244<br/>3.1.23 方法sleep()和wait()的区别  247<br/>3.2 方法join()的使用  247<br/>3.2.1 学习方法join()前的铺垫  247<br/>3.2.2 用方法join()解决问题  248<br/>3.2.3 方法join()和interrupt()出现异常  250<br/>3.2.4 方法join(long)的使用  252<br/>3.2.5 方法join(long)与sleep(long)的区别  254<br/>3.2.6 方法join()后的代码提前运行  257<br/>3.2.7 方法join(long millis, int nanos)的使用  261<br/>3.3 类ThreadLocal的使用  262<br/>3.3.1 方法get()与null  262<br/>3.3.2 类ThreadLocal存取数据流程分析  263<br/>3.3.3 验证线程变量的隔离性  266<br/>3.3.4 解决get()返回null的问题  270<br/>3.3.5 验证重写initialValue()方法的隔离性  271<br/>3.3.6 使用remove()方法的必要性  272<br/>3.4 类InheritableThreadLocal的使用  276<br/>3.4.1 类ThreadLocal不能实现值继承  277<br/>3.4.2 使用InheritableThreadLocal体现值继承特性  278<br/>3.4.3 值继承特性在源代码中的执行流程  280<br/>3.4.4 父线程有最新的值,子线程还是旧值?:不可变类型  285<br/>3.4.5 子线程有最新的值,父线程还是旧值?:不可变类型  286<br/>3.4.6 子线程可以感应对象属性值的变化?:可变类型  288<br/>3.4.7 重写childValue方法实现对继承值的加工  291<br/>3.5 本章小结  291<br/>第4章 锁的使用  292<br/>4.1 使用ReentrantLock类  292<br/>4.1.1 使用ReentrantLock实现同步  292<br/>4.1.2 验证多代码块间的同步性  294<br/>4.1.3 方法await()的错误用法与相应的解决方案  297<br/>4.1.4 使用方法await()和方法signal()实现wait/notify  300<br/>4.1.5 方法await()暂停的原理  302<br/>4.1.6 通知部分线程?:错误用法  306<br/>4.1.7 通知部分线程?:正确用法  308<br/>4.1.8 实现生产者/消费者模式一对一交替打印  311<br/>4.1.9 实现生产者/消费者模式多对多交替打印  313<br/>4.1.10 公平锁与非公平锁  315<br/>4.1.11 方法getHoldCount()的使用  318<br/>4.1.12 方法getQueueLength()的使用  319<br/>4.1.13 方法getWaitQueueLength(Condition condition)的使用  321<br/>4.1.14 方法hasQueuedThread(Thread thread)的使用  322<br/>4.1.15 方法hasQueuedThreads()的使用  323<br/>4.1.16 方法hasWaiters(Condition condition)的使用  324<br/>4.1.17 方法isFair()的使用  326<br/>4.1.18 方法isHeldByCurrentThread()的使用  326<br/>4.1.19 方法isLocked()的使用  327<br/>4.1.20 方法lockInterruptibly()的使用  328<br/>4.1.21 方法tryLock()的使用  330<br/>4.1.22 方法tryLock(long timeout, Time-Unit unit)的使用  331<br/>4.1.23 方法await(long time, TimeUnit unit)的使用  333<br/>4.1.24 方法awaitNanos(long nanos-Timeout)的使用  334<br/>4.1.25 方法awaitUntil(Date deadline)的使用  335<br/>4.1.26 方法awaitUninterruptibly()的使用  337<br/>4.1.27 实现线程按顺序执行业务  339<br/>4.2 使用ReentrantReadWriteLock类  342<br/>4.2.1 类ReentrantLock的缺点  342<br/>4.2.2 读读共享  344<br/>4.2.3 写写互斥  344<br/>4.2.4 读写互斥  345<br/>4.2.5 写读互斥  346<br/>4.3 本章小结  347<br/>第5章 定时器  348<br/>5.1 定时器的使用  348<br/>5.1.1 方法schedule(TimerTask task, Date time)的测试  349<br/>5.1.2 方法schedule(TimerTask task, Date f?irstTime, long period)的测试  357<br/>5.1.3 方法schedule(TimerTask task, long delay)的测试  365<br/>5.1.4 方法schedule(TimerTask task, long delay, long period)的测试  365<br/>5.1.5 方法scheduleAtFixedRate(TimerTask task, Date f?irst-Time, long period)的测试  366<br/>5.2 本章小结  374<br/>第6章 单例模式与多线程  375<br/>6.1 单例模式与多线程  375<br/>6.1.1 立即加载/饿汉模式  375<br/>6.1.2 延迟加载/懒汉模式  377<br/>6.1.3 使用静态内置类实现单例模式  388<br/>6.1.4 序列化与反序列化的单例模式实现  389<br/>6.1.5 使用static代码块实现单例模式  392<br/>6.1.6 使用enum枚举数据类型实现单例模式  393<br/>6.1.7 完善使用enum枚举实现单例模式  394<br/>6.2 本章小结  396<br/>第7章 拾遗增补  397<br/>7.1 线程的状态  397<br/>7.1.1 验证NEW、RUNNABLE和TERMINATED  399<br/>7.1.2 验证TIMED_WAITING  400<br/>7.1.3 验证BLOCKED  401<br/>7.1.4 验证WAITING  403<br/>7.2 线程组  404<br/>7.2.1 线程对象关联线程组?:一级关联  404<br/>7.2.2 线程对象关联线程组?:多级关联  406<br/>7.2.3 线程组自动归属特性  407<br/>7.2.4 获取根线程组  408<br/>7.2.5 线程组内加线程组  409<br/>7.2.6 组内的线程批量停止  409<br/>7.2.7 递归取得与非递归取得组内对象  410<br/>7.3 Thread.activeCount()方法的使用  412<br/>7.4 Thread.enumerate(Thread tarray[])方法的使用  412<br/>7.5 再次验证线程执行有序性  412<br/>7.6 类SimpleDateFormat非线程安全  414<br/>7.6.1 出现异常  415<br/>7.6.2 解决方法1  417<br/>7.6.3 解决方法2  418<br/>7.7 线程中出现异常的处理  420<br/>7.7.1 线程出现异常的默认行为  420<br/>7.7.2 使用setUncaughtException-Handler()方法进行异常处理  421<br/>7.7.3 使用setDefaultUncaught-ExceptionHandler()方法进行异常处理  422<br/>7.8 线程组内处理异常  423<br/>7.9 线程异常处理的优先性  426<br/>7.10 本章小结  431<br/>第8章 并发集合框架  432<br/>8.1 集合框架结构  432<br/>8.1.1 接口Iterable  432<br/>8.1.2 接口Collection  432<br/>8.1.3 接口List  433<br/>8.1.4 接口Set  434<br/>8.1.5 接口Queue  435<br/>8.1.6 接口Deque  435<br/>8.2 非阻塞队列  435<br/>8.2.1 类ConcurrentHashMap的使用  436<br/>8.2.2 类ConcurrentSkipListMap的使用  442<br/>8.2.3 类ConcurrentS

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP