Java中线程的生命周期简述

线程的五种基本状态

新建态

new

就绪态

cpu yield

运行态

cpu同步

阻塞态

sleep join wait synchronized<英 /'sɪŋkrənaɪzd/ 同步>

死亡态

结束

构造方法:

getState() 返回当前线程对象的状态对象
state<英 /steɪt/ 状态>

state的六种状态简述

  • NEW:新建态,没有开启线程
  • RUNNABLE:就绪态和运行态
  • BLOCKED:阻塞态(等待锁、I\O)
  • WAITING:阻塞态(调用了wait方法,等待其他线程唤醒的状态)
  • TIMED_WAITING:阻塞态(调用了有时间限制的wait方法、sleep方法)
  • TERMINATED:死亡态

主线程

定义:main方法对应的线程

特点:

  1. 它是产生其他子线程的线程
  2. 不一定最后运行
    . 比如子进程处于TIMED_WAITING:阻塞态 ----sleep

停止线程的方式

目前主流是定义标识停止
stop方法()过时了,将来可能随时剔除

定义标识比如在实现类中+
private boolean flag = true;
运行到一定过程重写定义flag为true,然后break

注意 :若处于冻结状态,则不能判断标记
解决方法:interrupt方法中断
interrupt是将线程的冻结状态清除,让线程恢复到就绪态
异常时常发生,通过catch可以捕获异常,在异常处理中,改变标记让循环结束,让run方法结束

线程的优先级

线程优先级分为10级,默认为5,最高是10 ,最低是1

常用类常量

  • Thread.MAX_PRIORITY = 10
  • Thread.NORM_PRIORITY = 5
  • Thread.MIN_PRIORITY = 1

结构方法:

getPriority() 当前线程对象的优先级
setPriority(int newPriority 设置线程的优先级

Thread.currentThread().setPriority(10) 设置线程优先级为10

join方法

非静态方法,当前线程挂起(阻塞)等待加入的线程执行完成。然后就绪态

yield方法

短暂地挂起当前线程,让别的线程先运行,cpu充足不明显

守护线程方法后台线程

比如:gc这种垃圾回收线程

特点

  1. 守护线程只有在别的线程运行的时候才有意义
  2. 前台线程结束,后台也要结束,(后台是在一段时间内结束,并不会立即结束)

实现方法

setDaemon(boolean on) 前提条件: 程序启动前调用有效

Daemon<英 /ˈdiːmən/> 守护进程;后台程序

线程安全

定义:一个程序对象被多个线程同时运行,每个线程得出的结果一样其他也一样,这就是线程安全
另一种若每个线程中对元素只读不写,这个元素也是安全的;

若有多个线程同时读写,每个线程结果不同步,这种是线程不安全

线程同步

作用:

线程同步可以解决资源安全问题

关键字 synchronized
synchronized<英 /'sɪŋkrənaɪzd/ 同步>

synchronized的使用方法:

  1. 同步代码块。

synchronized(同步锁){
需要同步操作的代码
}

  1. 同步方法

public synchronized void method(){
可能会产生线程安全问题的代码
}

  1. lock锁机制

Lock锁synchronized代码块和synchronized方法的功能更强大;

构造方法

lock():加同步锁
unlock():释放同步锁。

死锁

互相等待对方资源,称之为死锁
最典型的死锁:线程1持有ObjectA上的锁,并等待ObjectB上的锁,线程2持有ObjectB上的锁,并等待ObjectA上的锁,每个线程都不放弃获得的第一个锁,并一直等待第二个锁,因此会永远等下去。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值