0
点赞
收藏
分享

微信扫一扫

学习多线程前的必备知识

左手梦圆 2022-02-18 阅读 49

线程与进程

对于操作系统来说,一个任务就是一个进程(Process),比如QQ。

进程是系统进行资源分配和调度的基本单位

在一个进程内部,运行的子任务就是线程(Thread),比如QQ的一个聊天窗口

线程是操作系统进行运算调度的最小单位

在同一进程中的各个线程,都可以共享该进程所拥有的资源

协程运行在线程之上,协程并没有增加线程数量,只是在线程的基础之上通过分时复用的方式运行多个协程

实现线程主要有3种方式:使用内核线程实现、使用用户线程实现和使用用户线程加轻量级进程混合实现

Java查看所有进程的命令

  • jps 查看所有Java进程
  • jconsole 图形化界面,某个进程中所有线程状态
  • jstack 某个Java进程的所有线程状态

六种线程状态

  1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。

  2. 运行(RUNNABLE):Java线程中将就绪(READY)和运行中(RUNNING)两种状态笼统的称为“运行”

  • 就绪(READY):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度器选中并分配cpu使用权 。
  • 运行中(RUNNING):就绪(READY)的线程获得了cpu 时间片,真正开始执行程序代码。
  1. 阻塞(BLOCKED):表示线程阻塞于锁,正在等待进入了同步代码块的锁被释放。

  2. 等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)后才能继续执行。

    notify和interrupt方法会唤醒线程去竞争锁,如果成功进入Runable状态,否则进入Blocked状态

  3. 超时等待(TIMED_WAITING):该状态不同于WAITING,它可以在指定的时间后自行返回执行。

    wait,join,park这些方法会令线程进入Waiting状态,如果加上时间参数,就会进入Timed-Waiting状态

  4. 终止(TERMINATED):表示该线程已经执行完毕。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8hG7qSj-1645124912737)(E:\学习笔记\typora\img\thread1.jpg)]

举报

相关推荐

0 条评论