目 录CONTENT

文章目录

线程基础

在水一方
2022-02-14 / 0 评论 / 0 点赞 / 392 阅读 / 874 字 / 正在检测是否收录...

碎片化的时间来写点东西,七零八碎的知识点慢慢完善吧

创建方式

1 继承Thrad类

2 实现Runnable接口

3 实现Callable接口

4 通过线程池

线程状态

  • 新建状态(new):
    使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程

  • 就绪状态(RUNNABLE)
    当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。

  • 运行状态(RUNNING)
    如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。

  • 阻塞状态(BLOCKED)

  • 死亡状态(DEAD)

线程的生命周期

image.png

这里可以知道start与run 区别

  1. start()方法来启动线程,真正实现了多线程运行。这时无需等待 run 方法体代码执行完毕, 可以直接继续执行下面的代码。
  2. 通过调用 Thread 类的 start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。
  3. 方法 run()称为线程体,它包含了要执行的这个线程的内容,线程就进入了运行状态,开始运 行run函数当中的代码。 Run方法运行结束, 此线程终止。然后CPU再调度其它线程

线程的优先级

每一个 Java 线程都有一个优先级,这样有助于操作系统确定线程的调度顺序
Java 线程的优先级是一个整数,其取值范围是 1 - 10 默认情况下,每一个线程都会分配一个优先级 NORM_PRIORITY(5)

获取当前线程的优先级

Thread.currentThread().getPriority()

分类

守护线程:是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者

用户线程:我们平常创建的普通线程

相关API

线程同步

线程安全

原则:要么只读,要么加锁

并发和并行的区别

线程间的几种通信方式

线程间通信的主要目的是用于线程同步,所以线程没有象进程通信中用于数据交换的通信机制

  • 锁机制
  • 信号量机制
  • 信号机制

未完待补充........

0

评论区