Java核心技术卷一笔记8
2021/6/12 20:22:09
本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞