![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
问一下,线程池里面到底该设置多少个线程?
一、抛出问题关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下:第一派:《Java Concurrency in Practice》即《java并发编程实践》,如下图:如上图,在《Java Concurrency in Practice》一书中,给出了估算线程池大小的公式:Nthreads=NcpuUcpu(1+w/c),其中Ncpu=CPU核心数Ucpu=cpu使用率,0~1W/C=等待时间与计算时间的比率第二派:《Prog转载 2020-08-20 09:23:41 · 408 阅读 · 0 评论 -
面试官问:为什么 Java 线程没有Running状态?我懵了
Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事。具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态:什么是 RUNNABLE?直接看它的 Javadoc 中的说明:“一个在 JVM 中执行的线程处于这一状态中。(A threadexecutingin the Java virtual machine is in this state.)而传统的进(线)程状态一般划分如下:“注...转载 2020-08-13 10:54:05 · 990 阅读 · 1 评论 -
一文讲透 “进程、线程、协程”
本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程进程-操作系统提供的抽象概念,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。程序本身是没有生命周期的,它只是存在磁盘上的一些指令,程序一旦运行就是进程。当程序需要运行时,操作系统将代.转载 2020-08-04 09:13:33 · 199 阅读 · 0 评论 -
一文探讨 RPC 框架中的服务线程隔离
Kirito 推荐语:最近秋招开始了,很多学生开始准备起了秋招,有很多人想知道进一些有名的互联网公司实习有什么要求,正好最近跟一位阿里春招的实习小伙子聊了一些 RPC 相关的知识点,于是我把这篇他的思考转发过来,给大家参考下,我觉得有这样的实力,进大厂实习应该是没有问题的。以下是原文:自从春招实习之后,眼界真的就一下子开阔起来了,也感觉到了以前的自己好菜啊(虽然现在也是,笑~)。果然学习之路不能停!微服务如今应当是一个优秀的程序员必须学习的一种架构思想,而RPC框架作为微服务的核心,不说读一遍源.转载 2020-07-29 11:18:45 · 375 阅读 · 0 评论 -
太逗了,面试官让我讲线程 WAITING 状态!
面试官Q:你讲下线程状态中的WAITING状态,什么时候会处于这个状态?什么时候离开这个状态?小菜J 会心一笑...一个正在无限期等待另一个线程执行一个特别的动作的线程处于WAITING状态。“A thread that is waiting indefinitely for another thread to perform a particular action is in this state.然而这里并没有详细说明这个“特别的动作”到底是什么,详细定义还是看 javadoc(jd转载 2020-07-10 20:57:35 · 253 阅读 · 0 评论 -
为什么 wait/notify/notifyAll 在 Object 类定义而不是 Thread 类?
作者:Yujiaao来源:segmentfault.com/a/1190000019962661一个较难回答的 Java 问题, Java 编程语言又不是你设计的,你如何回答这个问题呢?需要对 Java 编程的常识进行深入了解才行。这个问题的好在它能反映面试者是否对 wait - notify 机制有没有了解, 以及他相关知识的理解是否明确。就像为什么 Java 中不支持多继承或者为什么 String 在 Java 中是final的问题一样,这个问题也可能有多个答案。为什么在 Obj...转载 2020-06-11 19:32:09 · 1656 阅读 · 0 评论 -
Thread.sleep(0) 有什么用?
我们可能经常会用到 Thread.Sleep 函数来吧使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?我们先回顾一下操作系统原理。转载 2020-06-09 09:35:48 · 225 阅读 · 0 评论 -
图解 | 线程的麻烦事儿,Actor能解决吗?
冯诺伊曼体系中, CPU和内存居于核心的地位。内存就像一个个的小格子,其中保存着程序要读写的值。当只有一个线程来访问内存的时候,事情非常简单:但是,当出现多线程的时候,就可能会出现互相覆盖的危险:在多线程并发执行的情况下,为了得到正确的结果,必须要加锁。看起来加锁是一件轻松的事情, 但实际上并非如此, 让我们看一个转账的例子:有两个账户,账户A和账户B, 现在有...转载 2020-04-29 10:31:02 · 309 阅读 · 0 评论 -
在Spring事务管理下,Synchronized为啥还线程不安全?
在synchronized 锁住方法的情况下,竟然出现了脏写Tips昨天本来打算是准备着一支烟 一杯咖啡 一个bug写一天的,突然我们组长跟我们说线上环境报错了,还出现了"服务器异常,请联系管理员"这特么不是一级事故吗?虽然有测试再前面扛枪。但是是我负责的直播模块,心理慌的一批(ps 报错图当时没保存了)分析事故原因因为是报错(因为我做这条数据查询的时候是selectOne 所以...转载 2020-04-23 17:53:51 · 345 阅读 · 0 评论 -
腾讯面试官:如何停止一个正在运行的线程?我一脸蒙蔽。。。
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 使用stop方法强行终止,但是不推荐这...转载 2020-04-05 14:40:33 · 266 阅读 · 0 评论 -
HashMap 为什么线程不安全?
前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。1.jdk1.7中的HashMap在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:public class H...转载 2020-03-31 22:51:14 · 336 阅读 · 0 评论 -
Java 如何线程间通信,面试被问哭。。。
Java 如何线程间通信,曾经小编面试被问哭的一道题。。正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点: thread.join(), object.wait(), object.notify(), CountdownLatch, Cycli...转载 2020-03-18 16:59:05 · 355 阅读 · 0 评论 -
Java堆内存是线程共享的!面试官:你确定吗?
作者 l Hollis来源 l Hollis(ID:hollischuang)Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解。可以说,关于JVM的相关知识,基本是每个Java开发者必学的知识点,也是面试的时候必考的知识点。在JVM的内存结构中,比较常见的两个区域就是堆内存和栈内存(如无...转载 2020-03-10 18:01:23 · 343 阅读 · 0 评论 -
两个线程如何交替执行,一个输出偶数一个输出奇数?
楼主今天在面经上看到这个题,挺有意思,小小的题目对多线程的考量还挺多。大部分同学都会使用 synchronized 来实现。楼主今天带来另外两种优化实现,让你面试的时候,傲视群雄!synchronized实现classThreadPrintDemo2{publicstaticvoidmain(String[] args){finalThreadPrint...转载 2019-11-13 09:50:07 · 256 阅读 · 0 评论 -
Envoy为什么能战胜Ngnix——线程模型分析篇
导读:随着Service Mesh在最近一年的流行,Envoy 作为其中很关键的组件,也开始被广大技术人员熟悉。作者是Envoy的开发者之一,本文详细说明了Envoy的线程模型,对于理解Envoy如何工作非常有帮助。内容较为深入,建议细细品读。关于Envoy的基础技术文档目前相当少。为了改善这一点,我正在计划做一系列关于Envoy各个子系统的文章。 这是第一篇文章,请让我知道你的想法以及你...转载 2018-11-30 11:08:38 · 1774 阅读 · 0 评论 -
如何定位消耗CPU最多的线程
之前有朋友反馈说发的内容希望有个梯度,逐步加深,前面发了几篇关于jvm源码分析的文章,可能我觉得我已经把内容写得浅显易懂了,但是对于某些没怎么接触的同学来说还是比较难理解,这个我以后慢慢改进吧,今天发篇轻松点的文章,可能大家在工作过程中也会可能碰到类似的问题,或许有经验的同学看到这个题目就知道我要说什么了,也有自己的定位方法。话不多说了,先来看代码吧public class Test...转载 2018-11-28 09:38:56 · 335 阅读 · 0 评论 -
什么是线程安全,你真的了解吗?
记得今年3月份刚来杭州面试的时候,有一家公司的技术总监问了我这样一个问题,说你给我说说有哪些线程安全的类,我心里一想,呵呵,这我早都背好了,稀里哗啦说了一大堆,那你再来说说什么是线程安全,然后就GG了,说真的,我们整天说线程安全,但是你对什么是线程安全真的了解嘛?说真的,我之前真的是了解甚微,那么我们今天就来聊聊这个问题。在说什么是线程安全之前我们先来聊聊什么是进程。 1、什么是进...转载 2018-12-13 09:54:08 · 233 阅读 · 0 评论 -
一个故事讲完进程、线程和协程
来源:码农翻身作者:刘欣很久以前,有两个程序,暂且称他们旺财和小强吧。旺财和小强这两个程序都很长,每个都有十几万行。 他们两个的人生价值就是到CPU上去运行,把运行结果告诉人类。CPU是稀缺资源,只有一个,他们俩必须排着队,轮流使用。旺财从头到尾执行完了,让出CPU, 让小强从头儿去执行。人类把这种处理方式叫做批处理。进程长久以来,两人相安无事。 后来C...转载 2018-12-19 14:25:45 · 177 阅读 · 0 评论 -
漫画:通俗易懂的进程与线程解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单...转载 2019-01-14 15:39:29 · 631 阅读 · 0 评论 -
Java 线程的 wait 和 notify 的神坑
也许我们只知道wait和notify是实现线程通信的,同时要使用synchronized包住,其实在开发中知道这个是远远不够的。接下来看看两个常见的问题。问题一:通知丢失创建2个线程,一个线程负责计算,一个线程负责获取计算结果。public class Calculator extends Thread { int total; @Override publ...转载 2019-01-21 21:04:16 · 471 阅读 · 0 评论 -
一个线程罢工的诡异事件
背景事情(事故)是这样的,突然收到报警,线上某个应用里业务逻辑没有执行,导致的结果是数据库里的某些数据没有更新。虽然是前人写的代码,但作为 Bugmaker&killer 只能咬着牙上了。因为之前没有接触过出问题这块的逻辑,所以简单理了下如图: 有一个生产线程一直源源不断的往队列写数据。 消费线程也一直不停的取出数据后写入后续的业务线程池。 业务线...转载 2019-04-02 11:23:52 · 210 阅读 · 0 评论 -
聊一聊 Spring 中的线程安全性
Spring与线程安全Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”。但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决线程安全问题的代码。Spring对每个bean提供了一个scope属性来表示该bean的作用域。它是bean的生命周期。例如,一个scope为singleton的bean,在第一次被注入时,会创建为一个单例对象,该对象会...转载 2019-05-03 19:44:07 · 450 阅读 · 0 评论 -
多线程,到底该设置多少个线程?
作者:享学课堂老顾微信公众号:享学课堂online一、前言“不好了,线上服务器超时严重,请求非常慢,好像报连接数too many了,怎么办?“小伙伴们在反馈。一般我们的技术老大的处理方式,把连接数和线程池调大点,重启,再观察。往往这个方式是应急措施,治标不治本,因为不知道问题的原因。有个严重误区,以为线程池设置太小了,调大点请求就会快了。今天就带着小伙伴们沟...转载 2019-06-03 09:56:11 · 1961 阅读 · 0 评论 -
如果把线程当作一个人来对待,所有问题都瞬间明白了
来源:公众号【编程新说】多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白。强烈建议去运行下文章中的示例代码,自己体会下。问题究竟出在哪里?一个线程执行,固然是安全的,但是有时太慢了,怎么办?老祖宗告诉我们,“一方有难,八方支援”,那不就是多叫几个线程来帮忙嘛,好办呀,多new几个不就行了,又不要钱。这样能管用吗?继续往下看。俗话说,“在...转载 2019-06-20 14:53:34 · 322 阅读 · 1 评论 -
JVM 最多支持多少个线程?
McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗?Eddie的回答:这取决于你使用的CPU,操作系统,其他进程正在做的事情,你使用的Java的版本,还有其他的因素。我曾经见过一台Windows服务器在宕机之前有超过6500个线程。当然,大多数线程什么事情也没有做。一旦一...转载 2019-06-20 15:19:49 · 1057 阅读 · 0 评论 -
我也是一个线程,为什么每天累得像狗一样?
我的编号是0x7954,我以为世界上的人都和我一样,一出生就忙碌个不停,一直忙到世界的毁灭。我每天与CPU阿甘为伍,忙着读写内存,一刻不得闲,阿甘这傻小子的速度实在是太快,指令周期都是按纳秒计算的,他经常对我说的一句话就是:快点儿,跟上!我就纳闷了,这程序员都是996,至少有一天可以休息,我这怎么得7*24工作啊,每天累得像狗一样!不过读写内存这个活是老大分配给我的,我认命。有一天...转载 2018-11-29 15:44:38 · 426 阅读 · 0 评论