Java并发编程的艺术(四)——进程与线程

进程(process)是操作系统启动的一个程序,是操作系统资源分配的最小单元,一个进程可以包含多个线程
线程(thread)是的CPU调度的最小单元

线程的状态(6种):

  1. new:创造实例初始化,但未进行start()方法的调用,所以此时的线程还没到就绪态
  2. runnable:就绪和运行态统称为“运行”
  3. waiting:需要等待其他线程做出一些特定的动作(通知或者中断)
  4. timed—waiting:超时等待,可以设置超时时间,即在超过指定的时间后自行返回
  5. blocked: 因为线程还未获取到锁而处于阻塞状态
  6. terminated:终止,此时线程已经执行完毕

在这里插入图片描述
初始化:
通过继承Thread或者实现Runnable接口可以获取到一个线程类,然后通过new构建一个线程实例
构建完成后并不是立即运行,通过调用start()方法进入就绪态,等待线程调度程序挑选

系统调度:线程调度程序会根据线程执行所需时间进行系统调度,避免一个只要执行一分钟的线程排在两小时线程之后从而导致该线程等待时间过长的情况发生,yield方法可以理解为给其他线程让步,从而提高系统运行效率

等待:
使用wait()和join()来可以使线程按照研发人员想要的顺序进行执行
通过notify()或者notifyAll()来使得相应的线程从等待状态回到就绪态

超时等待:
在等待的基础上设置超时时间,这样该线程不会一直等待下去,一旦时间达到超时时间则会自动返回。

阻塞:
一般存在于线程进入同步代码块或者同步方法之前,进入之前需要排队从而阻塞,一旦进入代码块后则意味着线程获取到了锁,回到了就绪态等待运行。

终止:
该线程完成了相应的任务,运行完毕后资源被回收

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值