什么是线程安全以及如何实现?

2020-07-11
阅读 8 分钟
4.5k
尽管多线程很强大,但它也是有代价的。在多线程环境中,我们需要以线程安全的方式编写实现。这意味着不同的线程可以访问共享的资源,而不会因错误的行为或产生不可预测的结果。这种编程方法被称为“线程安全”。

10个艰难的Java面试题与答案

2019-08-03
阅读 20 分钟
17.6k
这是我收集的10个较难回答的 Java 面试题。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。这些问题都是容易在各种 Java 面试中被问到的。

Java 线程执行与变量可见性的 happen-before 关系

2019-07-31
阅读 2 分钟
1.9k
Happens-before 定义程序中所有操作的部分排序。为了保证执行操作Y的线程可以看到操作X的结果(X和Y是否出现在不同的线程中),X和Y之间必然存在一个先发生的关系。在没有happen-before 排序的情况下在两个操作之间,JVM可以根据需要自由重新排序(JIT编译器优化)。

Java 中断异常的正确处理方式

2018-12-22
阅读 7 分钟
7.1k
这个故事可能很熟悉:你正在写一个测试程序,你需要暂停某个线程一段时间,所以你调用 Thread.sleep()。然后编译器或 IDE 就会抱怨说 InterruptedException 没有抛出声明或捕获。什么是 InterruptedException,你为什么要处理它?

Java 几种线程状态之间的相互关系

2018-12-20
阅读 2 分钟
2.4k
Java Thread 可能处在以下几种状态 Java Doc 里通过一个枚举类型 Enum<Thread.State> 来定义。 线程可以处于以下状态之一: NEW 尚未启动的线程处于此状态。 RUNNABLE 在Java虚拟机中执行的线程处于此状态。 BLOCKED 被阻塞等待监视器锁定的线程处于此状态。 WAITING 无限期等待另一个线程执行特定操作的线程处于...