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-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南