线程

一个程序同时执行多个任务,通常每个任务称为一个线程。

进程和线程区别:
进程拥有自己的一整套变量体系,而线程则是共享。线程是轻量的,创建撤销的开销小。

线程中断
线程终止只有两种方式:
1、run方法正常退出,自然死亡
2、因为有没有捕获的异常而终止run方法,意外死亡
stop 方法可以终止线程,但是被弃用了

当线程调用interrupt方法时,线程中断状态被置位;每个线程都有一个boolean标志,以判断线程是否被中断。

中断不等于终止,没有任务和语言上的要求,中断的线程应该终止。中断一个线程只不过是引起他的注意,被中断的线程可以决定如何响应中断。线程可以简单的将中断作为一个终止的请求。

线程属性
线程有很多属性,常常关心只有几种,线程优先级,守护线程,处理未捕获异常的处理器。
线程优先级,注意一点就行,程序功能的正确性不能依赖于优先级
守护线程:守护线程唯一的用途就是为其他线程服务,当只剩下守护线程的时候虚拟机就会退出,所以守护线程永远不要去访问资源,如文件,数据库,因为他可能在任何时候中断。函数void setDaemon(boolean isDaemon)
未捕获异常处理器:这是因为run方法不能抛出任何被检测的异常,但是被检测的异常被抛出就会终止线程;有几种方法处理,一是自己setUncaughtExceptionHandler;第二种是try catch

线程同步
线程同步方法主要有两种,一种是使用ReentrantLock类,和synchronized关键字


1、锁是可重入的,比如A调用B,执行A需要锁s,执行B也需要锁s,那么获得锁s,执行A同时也可以执行B。
2、公平锁偏爱等待时间长的线程,但是效率不好,ReentrantLock是公平锁。
3、锁可以拥有多个条件状态
4、锁使得代码只能被一个线程执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值