java第七章多线程_《JAVA多线程编程核心技术》 笔记:第七章:拾遗增补

一、线程的状态

1.1 状态种类及理解:(一共6个)

38ce073465ed46b4726ba806844a80b9.png

文字说明和理解:

NEW状态:线程实例化后还从未执行start()方法时的状态;

RUNNABLE状态:线程进入运行的状态;

TERMINATED状态:线程被销毁时的状态;

TIMED_WAITING状态:线程执行了Thread.sleep()方法,呈等待状态。等待时间达到,继续向下执行。(明确知道等待时间的状态)

BLOCKED状态:线程在等待锁的时候(是线程已经运行了,但是需要等待锁,此时无法继续运行,处于这种状态);

WAITING状态:线程执行了wait()方法后所处的状态。(不知道等待时间,需被唤醒的状态。线程执行了wait(long)方法后是TIMED_WAITING状态)

1.2 状态与方法之间的转变:

09bfebcfd8f980fab48a16d7935047c9.png

1.3 状态切换:

有的是单向切换,有的是双向切换

二、线程组

可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程。

27ae8cda786b1780aa0fb58c1c141ddb.png

2.1 线程对象关联线程组

1级关联:父对象中有子对象,但并不创建子孙对象。

多级关联:父对象中有子对象,子对象中再创建子对象,出现子孙对象的效果。

2.2 线程组自动归属特性

自动归属:自动归属到当前线程组。

实验表明:实例化一个线程组时,不指定所属的线程组,那么该线程组会自动归属当前线程对象所属的线程组中。

2.3 根线程组:

实例表示:JVM运行的根线程组是system,system之上没有其他线程组了。

2.4 线程组内的线程批量停止:

调用线程组的interript()方法时,会让线程组内的所有线程停止。但是线程组内的子线程组中的线程并不会停止。

2.5 递归与非递归取得组内对象

就是一个方法的参数而已...

三、SimpleDateFormat非线程安全

3.1 不安全的原因:

这个i++或者i--那些是一样的,同一个对象,不同的线程进行操作,没有使用安全的synchronize操作,所以会读写不一致,出现了异常。

3.2 解决方法:

解决方法一:

修改工具类,使每次线程操作都返回一个新的对象,使线程使用自己的变量,从而不互相操作对象,便线程安全了。

解决方法二:

使用TreadLocal来使每个线程都只操作自己的变量。原理和方法一一样,只是实现不同。

四、线程和线程组的异常处理

线程情况

处理方法

一个单独的线程

使用 setUncaughtExceptionHandlee()对线程的异常进行捕捉和处理,不用try catch。

同一线程对象的所有线程

setDefaultUncaughtExceptionHandlee()是对所有线程对象(由该类派生的所有的对象)的异常进行捕捉和处理,是一个批量操作,不需像setUncaughtExceptionHandlee()那样对每个线程进行单独处理。

线程组内处理异常

实现一个线程异常后其他线程全部停止?

重写线程组的UncaughtException()方法,在捕获到异常后,进行线程组的中断操作,那么所有线程都会终止。

线程组内的一个线程出现异常,不会影响其他线程的执行。

五、线程异常处理的传递

单独对象异常处理

对象设置默认异常处理

线程组的异常处理

处理结果

设置

设置(或未设置)

设置(或未设置)

只触发对象的异常处理;

不会触发线程组的异常处理;

未设置

设置

设置

触发对象默认的异常处理;

同时触发线程组的异常处理;

未设置

未设置

设置

只会触发线程组的异常处理;

设置了对象异常处理:则只会触发对象的异常处理,其他(对象默认异常处理或线程组异常处理)不管是否设置都不会触发异常处理。

没有设置对象异常处理:则其他设置了什么触发什么。

END

java多线程编程核心技术-笔记

一.第一章 1.自定义线程类中实例变量针对其他线程有共享和不共享之分,自定义线程中的变量,如果是继承自thread类,则每个线程中的示例变量的更改,不影响其他线程2.当多个线程去访问一个局部变量是会产 ...

Java多线程编程核心技术,第六章

1,饿汉模式/单例模式,一开始就新建一个静态变量,后面用getInstance()都是同一个变量 2,懒汉模式/单例模式,在getInstance()才会new一个对象,在第一个有了后不会继续创建 3 ...

Java多线程编程核心技术,第五章

1,Timer timer = new Timer(true)现在是守护进程 2,timer是按照顺的,没有异步 3,timer方法,schedule(TimerTask task, Date fir ...

Java多线程编程核心技术,第四章

1,ReentrantLock 2,object的wait(),wait(x),notify(),notifyAll(),分别等于Condition的await(),await(x,y),signal ...

Java多线程编程核心技术,第三章

1,notify的同步块完了,才会运行wait的同步块 2,interrupt()不是静态方法,用在wait的线程上会有InteruptException,锁也会被释放 3,notify()唤醒的线程 ...

《Java 多线程编程核心技术》- 笔记

作为业务开发人员,能够在工作中用到的技术其实不多.虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上.因为,我们用的框架已经把这些事做掉了. 比如web开发,外面有大 ...

Java多线程编程核心技术

Java多线程编程核心技术 这本书有利于对Java多线程API的理解,但不容易从中总结规律. JDK文档 1. Thread类 部分源码: public class Thread implements ...

《Java多线程编程核心技术》推荐

写这篇博客主要是给猿友们推荐一本书. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点 ...

Java多线程编程核心技术(三)多线程通信

线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时 ...

《java多线程编程核心技术》不使用等待通知机制 实现线程间通信的 疑问分析

不使用等待通知机制 实现线程间通信的 疑问分析 2018年04月03日 17:15:08       ayf 阅读数:33 编辑 一书第三章开头,有如下案例: ...

随机推荐

Swift #function 和 _cmd (Objective-C)

NSStringFromSelector(_cmd); // Objective-C print(__FUNCTION__) // Swift 2 print(#function) // Swift ...

了解C++默认编写并调用哪些函数

概念:编译器可以暗自为class创建default构造函数.copy构造函数.copy assignmengt构造函数,以及析构函数. 比如你写下:struct Node { }; 这就好像你写下这样 ...

cf50A(水题)

题意:m*n的地板最多能铺多少2*1的地板砖,不能重复... 水题.. 上代码... #include #include using ...

vector 之 find 重载

众所周知,map有find,但vector的find只能调用algorithm中的find通用方法. 参考 对 ...

HTTP verb的安全性和幂等性

Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端提供这些特性. 安全性,仅指该方法的多次调用不会产生副作用,不涉及传统意义上的“安全”,这里的副作用是指资源状态.即, ...

安卓---下拉刷新---上拉加载---解决导入library等自生成库文件失败的问题

本文的下拉刷新以及上拉加载都是用PullToRefresh实现的,关于PullToRefresh的介绍以及源码,网上可以找到很多,本人在此不再赘述. PullToRefresh是一套实现非常好的下拉刷 ...

eclipse中console的输出行数控制

eclipse中console的输出行数控制 开发中,会遇到当输出大量的sql语句或者错误的时候,往往会因为console输出的限制而不能完整显示,所以我们自己就需要迫切的增加显示的行数,这样 就可以 ...

Linux 日志文件管理——限制大小

设计思路: 1 用一个INI配置文件管理日志目录,日志文件限制的大小,特殊的日志名,特殊日志的大小限制. 2 读取INI文件中的所有信息:每一个日志目录对应的大小限制,每一个特殊日志对应的大小限制.如 ...

jetty8 text/plain默认字符编码的坑

今天在测试一个content-type为text/plain的API时发现后端requestBody乱码了,而线上正常. 自己本地使用jetty8版本,插件自带版本,而线上使用jetty9. 最开始没 ...

echarts 响应式布局

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值