工作这么久了,还不懂多线程吗?

简介: 浩哥Java多线程整理学习系列之01基础知识整理
浩哥Java多线程整理学习系列之01 基础知识整理

在这里插入图片描述

浩哥Java多线程整理学习系列之01基础知识整理

1. 如何查看电脑核数及线程数

右击任务栏→任务管理器
可以看到内核数(物理核心数)和逻辑处理数。
image.png
其中CPU核心数和线程数是一对一的关系,
逻辑处理器的个数就是虚拟出来的,采用多核技术。

Linux查询CPU核心数

# 查询物理cpu核心数
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 逻辑核数
cat /proc/cpuinfo| grep "processor"| wc -l

在这里插入图片描述

2. 线程和进程、协程之间的区别

进程:操作系统分配资源(CPU、内存、磁盘等)的最小单位,进程内可有多个线程并共享这个进程的资源。可以想象成是一个应用,比如谷歌浏览器。
线程:CPU调度的最小单位,负责进程的执行。可以想象成谷歌浏览器打开的网页,一个网页一个线程。
协程:一种比线程更小的存在,为了节省系统切换开销提高性能。

3. 时间片轮转(RR)调度算法

专门为分时系统设计的调度算法,增加了抢占式切换进程,于是就有了上下文切换问题。
进程/线程上下文切换会用掉你多少CPU?

4. 并行和并发的区别

需要用时间来衡量。
并行(Parallelism):同一时刻同时处理任务的能力。比如我多核CPU,多个应用一起处理。
image.png

并发(Concurrency):单位时间内完成任务的能力。比如1ms内CPU来回切换QQ和浏览器,使之感觉同时在运行。
这里就是采用上下文来回切换了。
image.png

5. 系统限制线程数

因为新建线程需要消耗CPU和内存资源,所以都要限制。
Linux限制最大线程数:
会根据实际物理机的资源而定。
image.png

Windows限制最大线程数:
image.png

6. 并发的优缺点

优点:充分利用CPU多核资源、提高程序响应时间、异步化执行任务。
缺点:逻辑控制复杂、容易产生死锁、线程管理问题。

目录
相关文章
|
1月前
|
缓存 Java 程序员
程序员的金三银四:创建线程池有哪几种方式?
程序员的金三银四:创建线程池有哪几种方式?
18 0
|
4月前
|
存储 算法 Java
理解进程调度的基本过程,为学好多线程打好基础
理解进程调度的基本过程,为学好多线程打好基础
33 0
理解进程调度的基本过程,为学好多线程打好基础
太难了!面试官居然要我停止一个正在运行的线程?
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。
|
11月前
|
消息中间件 JavaScript 小程序
以为很熟悉 CountDownLatch,万万没想到在生产环境翻车了.....
以为很熟悉 CountDownLatch,万万没想到在生产环境翻车了.....
|
缓存 算法 Java
多线程:第一章:我(线程)这一生
多线程:第一章:我(线程)这一生
多线程:第一章:我(线程)这一生
|
Java 数据库
以为很熟悉CountDownLatch的使用了,没想到在生产环境翻车了
我们知道用来控制并发流程的同步工具,主要的作用是为了等待多个线程同时完成任务后,在进行主线程任务。
|
监控
【多线程:犹豫模式】
【多线程:犹豫模式】
99 0
|
存储 安全 算法
重生之我在人间敲代码_Java并发基础_安全性、活跃性以及性能问题
并发编程中我们需要注意的问题有很多,很庆幸前人已经帮我们总结过了,主要有三个方面,分别是:安全性问题、活跃性问题和性能问题。
|
缓存 Java 程序员
一篇文章带你完全了解JAVA线程池,再也不用担心被面试官问了
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位,我们的程序最终都是由线程进行运作。在Java中,创建和销毁线程的动作是很消耗资源的,因此就出现了所谓“池化资源”技术。线程池是池化资源技术的一个应用,所谓线程池,顾名思义就是预先按某个规定创建若干个可执行线程放入一个容器中(线程池),需要使用的时候从线程池中去取,用完之后不销毁而是放回去,从而减少了线程创建和销毁的次数,达到节约资源的目的。
|
存储 缓存 Linux
面试官:如何写出让 CPU 跑得更快的代码?
CPU Cache 到底是什么样的,是如何工作的呢,又该写出让 CPU 执行更快的代码呢?
面试官:如何写出让 CPU 跑得更快的代码?