Java 面经(二):JUC 并发编程
线程 操作系统中线程的状态 Java 线程的状态 NEW:Thread 被 new 创建,但是还没有调用 start() 方法; RUNNING:调用 start() 方法,线程开始执行,只有此阶段才会获得 CPU 资源; BLOCKED:遇到 synchronized 关键字,等待获得锁,线程进入
线程 操作系统中线程的状态 Java 线程的状态 NEW:Thread 被 new 创建,但是还没有调用 start() 方法; RUNNING:调用 start() 方法,线程开始执行,只有此阶段才会获得 CPU 资源; BLOCKED:遇到 synchronized 关键字,等待获得锁,线程进入
ThreadLocal JDK 提供的 ThreadLocal 可以实现让每个线程都有自己的专属本地变量,虽然每个线程操作的是同一个 ThreadLocal 对象,但是 get() 和 set() 方法操作的变量都保存在每个线程内部,和其他线程互不影响。 举个例子,下面的代码创建了 10 个线程对一
Java 内存模型 Java 的内存模型(Java Memory Model, JMM)规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存保存了被该线程使用的变量的主内存副本。线程对变量的读取、赋值等操作都必须在工作内存中执行,而不能直接读写主内存中的数据。 比如下面的例子