西维蜀黍

【Java】多线程 - 线程状态切换函数

Java的线程状态

Java语言中定义了6种线程状态,在任意一个时间点,一个线程有且只有其中一种状态,这6种状态是:

  ...


【Java】多线程 - 线程池(Thread Pool)

什么是线程池(Thread Pool)?

为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用。

用线程时从线程池中获取,用完以后不销毁线程,而是归还给线程池(Thread Pool)。

  ...


【Operating System】进程 - 协程(Coroutines)

背景

线程模型

在现代计算机结构中,先后提出过两种线程模型:用户级线程(user-level threads)内核级线程(kernel-level threads)

  ...


【Java】JVM - Java 内存模型(Java Memory Model)

背景

重排序(Instruction Reordering)

在执行程序时为了提高性能,编译器和处理器常常会对指令做重排序。

重排序分三类:

  • 编译器优化的重排序:编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。
  • 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。
  • 内存系统的重排序。由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可能是在乱序执行。
  ...


【Lock】锁的可重入性(Reentrancy)

可重入性(Reentrant Lock)

Java 中的固有锁(intrinsic lock)具有可重入性(Reentrancy),这意味着锁的获取是以每个线程(per-thread)为单位的,而不是每个调用(per-invocation)。

  ...