JUC笔记(来自互联网)

笔记  JUC  Java 

JUC进程概述进程:程序是静止的,进程实体的运行过程就是进程,是系统进行资源分配的基本单位进程的特征:并发性、异步性、动态性、独立性、结构性线程:线程是属于进程的,是一个基本的 CPU 执行单元,是程序执行流的最小单元。线程是进程中的一个实体,是系统独立调度的基本单位,线程本身不拥有系统资源,只拥有

常见线程安全类

笔记  JUC  Java 

多个组合不是原子的验证:

变量的线程安全分析

笔记  JUC  Java 

package cn.meowrain;import java.util.ArrayList;import java.util.List;import java.util.Vector;import java.util.concurrent.CountDownLatch;import java.ut

Java synchronized

笔记  JUC  Java 

语法无锁情况package cn.meowrain;public class Main { static int count = 0; static Object lock = new Object(); public static void main(String[] args)

Java 线程的6种状态

笔记  JUC  Java 

Java 线程的6种状态:NEW:线程已创建但未启动。RUNNABLE:线程可运行,但不一定正在运行。BLOCKED:线程等待锁资源。WAITING:线程等待其他线程的通知。TIMED_WAITING:线程等待,但有时间限制。TERMINATED:线程结束,无法重新启动。 public enum

守护线程

笔记  JUC  Java 

默认情况下,Java进程需要等待所有线程都运行结束才会结束,有一种特殊的线程叫做守护线程,只要其他非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束package cn.meowrain;import lombok.extern.slf4j.Slf4j;import java.util

Thread.interrupt

笔记  JUC  Java 

打断正常运行的线程package cn.meowrain;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class Main { public static void main(String[] args) { Thread t1 =

Thread.join

JUC  Java 

介绍在 Java 中,线程是执行并发任务的重要工具。而 Thread.join() 方法是用于控制线程执行顺序的一种机制,它可以让主线程(或其他线程)暂停运行,等待某个线程完成后再继续执行。当一个线程 A 调用了另一个线程 B 的 join() 方法,线程 A 会暂停执行,直到线程 B 运行完毕后,

Thread.yield

JUC  Java 

说明调用yield会让当前线程从Running进入Runnable就绪状态,然后调度执行其他线程具体的实现依赖于操作系统的任务调度器线程优先级现成优先级会提示调度器优先调度该线程,但它仅仅是一个提示,调度器可以忽略它如果cpu比较忙,那么优先级高的线程会获得更多的时间片,但cpu闲时,优先级几乎没作

Thread.sleep

笔记  JUC  Java 

介绍调用sleep会让当前线程从Running进入Timed Waiting状态其他线程可以用interrupt方法打断正在睡眠的线程,这时候sleep方法会输出InterruptedException睡眠结束后的线程未必会得到执行建议用TimeUnit的sleep代替Thread的sleep获得更