如何理解 Java 多线程

摘要:
进程和线程的概念是操作系统的概念,因此你可能需要看看大学有关《操作系统原理》这本书中的内容才能理解什么是进程和线程。Java是多线程,就意味着在JVM中可以为不同的计算启动不同的线程,来加快处理速度。只要涉及到线程就会有内存共享问题,如果有内存贡献问题就会有线程安全和线程同步的问题。既然有线程安全和同步的问题,如何理解和解决?

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

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

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

manage-java-threads

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

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

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

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

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

https://www.ossez.com/t/java/13696

免责声明:文章转载自《如何理解 Java 多线程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python之全局变量的测试ArrayList 去除重复元素下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

node.js如何充分利用多核cpu?

Nodejs是基于chrome浏览器的V8引擎构建的,也就说明它的模型与浏览器是类似的。我们的JavaScript会运行在单个进程的单个线程上。 但是V8引擎的单进程单线程并不是完美的结构,现如今CPU基本上都是多核的。真正的服务器往往有好几个CPU(像我们的线上物理机有12个核),所以,这就将抛出Nodejs实际应用中的一个问题:“如何充分利用多核CPU...

java 多线程--------(一)

创建线程的4种方式 1、继承Thread类,复写run方法,run方法中为线程需要执行的逻辑部分,而启动线程调用start方法。小示例见代码,通过Thread.currentThread().getName()可以获得当前线程名称 public class MyThread extends Thread { private int i; pub...

Eclipse debug 多线程

      以前用到过许多线程开发,对多线程开发也算是小有点心得,但一开始多线程开发的时候,碰到很多壁。但总得来说,有个好的工具总是能事半功倍。我用的工具是eclipse,在开发多线程时,其debug模式是能直接模拟多线程环境的,网上也有许多资料,但大多都不是很全。希望我能够将自己的一些心得记录下来,希望能帮助到还为多线程开发而纠结的朋友。 先写个简单的...

C#基础--应用程序域(Appdomain)

AppDomain理解为了保证代码的键壮性CLR希望不同服务功能的代码之间相互隔离,这种隔离可以通过创建多个进程来实现,但操作系统中创建进程是即耗时又耗费资源的一件事,所以在CLR中引入了AppDomain的概念,AppDomain主要是用来实现同一进程中的各AppDomain之间的隔离,AppDomain可以用以下特征来描述它的全貌: AppDomai...

面试官一上来就问我Chrome底层原理和HTTP协议(万字长文)

此文转载自:https://blog.csdn.net/qq_36232611/article/details/110367883 已发布到 程序员小灰 公号 前言有人说,如果你懂得浏览器的工作原理,你就能解决80%的前端难题。 是的,了解浏览器的工作原理,有助于你的工作;而了解TCP/IP 、HTTP等网络协议,更是对你未来的职业发展大有裨益。 下面,...

操作系统知识总结

操作系统 面向进程和线程学习操作系统。 目录 Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 进程线程模型 进程间通信 同步互斥机制 存储管理 网络I/O模型 内容 进程线程模型 线程和进程的概念已经在操作系统书中被翻来覆去讲了很多遍。很多概念虽然都是套话,但没能理解透其中深意会导致很多内容...