【java并发编程】-01-线程生命周期

线程的状态

NEW  初始状态

RUNNABLE    运行状态

BLOCKED    阻塞状态 线程阻塞于锁

WAITING    等待状态

TIME_WATING    超时等待状态

TERMINATED    终止状态

 

线程的创建

父线程分配空间创建子线程,子线程继承父线程的相关属性参数,初始化线程对象在堆内存中等待运行。

当线程初始化后,调用start()方法启动线程,start()的作用在于调用方线程通知java虚拟机,只要线程规划器空闲,就应立即启动调用start()方法的线程。

 

线程中断

通过调用线程的interrupt()方法来中断线程。线程通过isInterrupted()来判断线程是否被中断。当抛出InterruptedExcepton发生线程中断时,中断标志位会被清除,此时isInterrupted()会返回false。通过interrupt()方法不会立即中断线程,而是使线程在终止时有机会清理相应的资源,并安全优雅的停止线程。

另一种安全的中断线程的方法是,通过一个volatile修饰的内存可见性的变量作为标志符,而通过改变标识符来通知停止线程。

 

ThreadLocal

可以理解为线程的私有变量,其本质是为每个线程提供独立的变量副本,就像local一样。当线程结束时该变量副本也会被GC回收掉。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值