如何理解 Java 多线程

进程和线程的概念是操作系统的概念,因此你可能需要看看大学有关《操作系统原理》这本书中的内容才能理解什么是进程和线程。

简单来说进程和线程涉及到 CPU 的使用和内存的分配。

可以想象下你的浏览器,如果你打开了一个浏览器,表示你启动了一个进程,如果你再打开多个标签页,表示你启动了不同的线程(敲黑板:浏览器启动不同的标签页,其实启动的是不同的进程,不是启动线程,但这个模式比较容易理解罢了)。

manage-java-threads

Java 是多线程,就意味着在 JVM 中可以为不同的计算启动不同的线程,来加快处理速度。

类比浏览器的例子,你打开一个网页,等了一段时间,觉得载入太慢了,你去打开了另外的网页了。

只要涉及到线程就会有内存共享问题,如果有内存共享问题就会有线程安全和线程同步的问题。

既然有线程安全和同步的问题,如何理解和解决?

这些问题就是为什么在面试的时候老被问到的原因。