Java教程

Java核心技术卷一笔记8

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!