1、基础概念

一、进程与线程

  进程与线程的详细介绍

1、什么是进程

进程是操作系统进行资源分配的最小单位,进程与进程之间是相互独立的。

2、什么线程

  线程是cpu调度的最小单位,线程必须依赖于进程存在。一个进程至少要有一个线程,同一个进程内的线程可以共享内存。

二、并行和并发

  并行与并发举例介绍

1、并行

  并行是指可以同时运行的任务数,这与cpu的核数相关。如食堂打饭的时候有四个窗口可以同时打饭,那么相对于打饭事件,他的并行数就是四。

2、并发

  并发是指单位时间内能处理的任务数。如食堂打饭的时候四个窗口一分钟共为二十个人打完饭,那么相应的并发数则是 20人/min。

三、我们为什么要使用线程?

  1. 可以充分利用CPU资源;
  2. 加快用户响应时间;
  3. 使代码模块化、异步化、简单化。

四、使用多线程需要注意哪些?

  1. 线程之间的安全性;
  2. 线程之间的死锁;
  3. 线程过多会使服务器资源耗尽而死机。

五、线程的生命周期

  推荐博客
  线程有五种状态,分别为新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、运行(RUNNING)、死亡(DEAD)。

  1. 新建状态:新建一个线程对象(new Thread())。
  2. 可运行状态:线程的执行是通过CPU时间片轮转机制调度的,当通过start()方法启动一个线程之后,线程会进入可运行状态,等待CPU的调度,直到获得CPU的使用权。
  3. 运行状态:当线程得到CPU的使用权,线程进入运行状态,开始执行任务。
  4. 阻塞状态:线程在执行的过程中(即运行状态)因为某种原因而失去了CPU的使用权,线程就会进入阻塞状态。
  5. 死亡状态:当线程正常结束或者因异常退出run()方法的时候线程就会进入死亡状态。
T.start()
run()正常结束
Exception
T.wait()(等待阻塞)
T.lock等待锁释放(同步阻塞)
T.sleep()/t.join()(其他阻塞)
T.sleep()结束
join()的线程执行完毕
获得锁资源
wait()的等待时间结束
获得CPU使用权
被剥夺CPU使用权/yield()
新建 (NEW)
可运行状态 (RUNNABLE)
运行状态 (RUNNING)
死亡 (DEAD)
阻塞 (BLOCKED)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值