线程基础知识点

简介: 本章讲解了线程的相关知识

1、进程和线程

进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间。

线程是比进程更小的执行单位,它是在一个进程中独立的控制流,一个进程可以启动多个线程,每条线 程并行执行不同的任务。

2、线程的生命周期

初始(NEW):线程被构建,还没有调用 start()。

运行(RUNNABLE):包括操作系统的就绪和运行两种状态。

阻塞(BLOCKED):一般是被动的,在抢占资源中得不到资源,被动的挂起在内存,等待资源释放将其唤 醒。线程被阻塞会释放CPU,不释放内存。

等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。

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

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

image.png

3、线程中断

线程中断即线程运行过程中被其他线程给打断了,它与 stop 最大的区别是:stop 是由系统强制终止线程,而线程中断则是给目标线程发送一个中断信号,如果目标线程没有接收线程中断的信号并结束线程,线程则不会终止,具体是否退出或者执行其他逻辑取决于目标线程。

线程中断三个重要的方法:

1、java.lang.Thread#interrupt 调用目标线程的 interrupt() 方法,给目标线程发一个中断信号,线程被打上中断标记。

2、java.lang.Thread#isInterrupted() 判断目标线程是否被中断,不会清除中断标记。

3、java.lang.Thread#interrupted 判断目标线程是否被中断,会清除中断标记。

privatestaticvoidtest2() {
Threadthread=newThread(() -> {
while (true) {
Thread.yield();
// 响应中断if (Thread.currentThread().isInterrupted()) {
System.out.println("Java技术栈线程被中断,程序退出。");
return;
            }
        }
    });
thread.start();
thread.interrupt();
}
相关文章
|
7月前
|
Java
Java线程知识点总结
Java线程知识点总结
|
4月前
|
安全 Java
Java多线程(全知识点)(下)
Java多线程(全知识点)(下)
44 0
|
2月前
|
存储 安全 Java
并发编程知识点(volatile、JMM、锁、CAS、阻塞队列、线程池、死锁)
并发编程知识点(volatile、JMM、锁、CAS、阻塞队列、线程池、死锁)
72 3
|
1月前
|
Java
java线程知识点总结
Java线程核心概念:线程是程序执行流,一个进程可有多个线程。创建线程通过继承Thread或实现Runnable接口。线程状态包括新建、就绪、运行、阻塞、等待、超时等待和终止。同步用synchronized或Lock防止数据不一致,避免死锁。线程间通过共享变量、wait/notify通信。线程池(如ThreadPoolExecutor、ScheduledThreadPoolExecutor)优化性能和资源管理。
17 6
|
4月前
|
资源调度 Java 程序员
Java线程知识点总结
Java线程知识点总结
|
7月前
|
算法 Ubuntu C++
[总结] C++ 知识点 《四》多线程相关
[总结] C++ 知识点 《四》多线程相关
|
9月前
|
调度 Python Windows
【python】多任务编程之线程、进程知识点详细总结
【python】多任务编程之线程、进程知识点详细总结
54 0
|
10月前
|
SpringCloudAlibaba 安全 Java
JUC并发编程(二):线程相关知识点
实现编发编程的主要手段就是多线程。线程是操作系统里的一个概念。接下来先说说两者的定义、联系与区别。
57 0
|
10月前
|
Java
JAVA练手小游戏——多线程知识点小练习——文字版勇者斗恶龙
JAVA练手小游戏——多线程知识点小练习——文字版勇者斗恶龙
78 0
|
安全 Java 调度
Java线程基础知识点整理
- 进程是资源分配的最小单位,线程是`cpu`调度的最小单位。 - 进程可以看做独立应用,而线程不能。一个程序会产生一个进程,而一个进程包含一个或多个线程。 - 进程间是相互隔离的,线程可以共享进程内的资源