Java核心技术卷一笔记8

Posted 肥肥的蚂蚁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java核心技术卷一笔记8相关的知识,希望对你有一定的参考价值。

第十四章 并发

多进程和多线程的区别:每个进程拥有自己的一套变量,而线程共享数据。

14.1 什么是线程

不要调用Thread类或Runnable对象的run方法。直接调用run方法只会执行同一个线程中的任务,而不会启动新线程。

应该调用start方法,该方法才能创建新线程。

14.2 中断线程

没有可以强制线程终止的方法,线程的终止是通过interrupt方法来请求,该线程自己决定如何响应中断。

如果线程已被中断,此时还调用sleep方法,中断置位会被清除并抛出异常。

线程中存在两个方法,一个是interrupted方法,该方法是静态方法,该方法检测当前线程是否中断的同时还会清除中断状态。另一个方法是isInterrupted方法,这是一个实例方法,这个方法不会改变中断状态。

14.3 线程状态

刚new出来的线程处于new状态,调用start方法后线程处于runnable状态,运行中的线程正是处于可运行状态。当一个线程试图获得一个内部的对象锁,而该锁被其他线程持有,该线程进入阻塞状态。当其他线程释放锁时且线程调度器允许该线程持有它,此时线程变成非阻塞状态。当线程等待另一个线程通知调度器一个条件时,此时该线程就进入了等待状态。若等待时有一个超时参数,则线程进入计时等待状态。

14.4 线程属性

线程优先级

每个线程都有一个优先级,一个线程会继承其父线程的优先级。

守护线程

守护线程唯一用途是为其他线程提供服务。

未捕获异常处理器

线程的非受查异常需要被传递到一个用于未捕获异常的处理器。

14.5 同步

不能对带资源的try语句使用锁。

应用Lock和Condition接口是最基本的加锁处理,

若使用volatile关键字声明一个域,则代表该域可能被另一个线程并发更新。

14.6 阻塞队列

在多线程程序中,应该用offer,poll,peek这类操作失败时返回null而不是抛出异常的方法。

14.7 线程安全的集合

任何集合类都可以通过同步包装器变成线程安全的,实现原理是应用了锁。

14.8 Callable和Future

FutureTask包装器可以将Callable转换成Future和Runnable。

14.9 执行器

14.10 同步器

以上是关于Java核心技术卷一笔记8的主要内容,如果未能解决你的问题,请参考以下文章

Java核心技术 卷一 笔记六 Date类

Java核心技术卷一笔记7

《Java核心技术(卷一)》读书笔记——第六章:内部类

Java核心技术卷一 8. java并发

java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类

java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类