3 天前 / 九卷
这个问题是安琪拉之前面试被问到的一个问题,正好顺着上一篇文章介绍完线程调用时的用户态和内核态的切换,后续把 Java 并发的都一起讲了。 面试官:听前一个面试官说你 Java 并发这块掌握的不错,我们深入的交流一下; 我: 看了看面试官头部稀疏的结缔组织,已然觉得这场面试不简单,不过好在事前把安琪拉的博客看了个遍,有所准备,我回答说:咳咳,掌握的还算可以。 面试官:Java 线程用过的吧? 我:用过。 面试官:那你给我讲讲 Java 线程和操作系统的? 我:啊!!! 咆哮剧情不应该这样的啊,开场不应该先是 synchronized 或者 volatile...
3 天前 / 苏三说技术
一、前言对于从事后端开发的同学来说,线程是必须要使用了,因为使用它可以提升系统的性能。但是,创建线程和销毁线程都是比较耗时的操作,频繁的创建和销毁线程会浪费很多 CPU 的资源。此外,如果每个任务都创建一个线程去处理,这样线程会越来越多。我们知道每个线程默认情况下占 1M 的内存空间,如果线程非常多,内存资源将会被耗尽。这时,我们需要线程池去管理线程,不会出现内存资源被耗尽的情况,也不会出现频繁创建和销毁线程的情况,因为它内部是可以复用线程的。 二、从实战开始在介绍线程池之前,让我们先看个例子。
13 天前 / u578509
续航真真长!自己亲测,17-18 小时毫无压力。 很不习惯。包括了 macOS、快捷键、触摸板、文件管理,到目前为止我还没弄明白 control、option、command 这三个键的区别。 整机质感很好。最想说的就是屏幕,很细、很腻、很柔,非常有一种舒服感、质感,大体有些「遇见即要护你终生」的感觉。 至于网上一直讨论的兼容性问题,目前还没遇到,因为我本机用的最多的是浏览器、微信、IDEA,这些都能正常运行。 好了,回归正题。
19 天前 / 影浅
从这篇开始将会开启高性能、高并发系列,本篇是该系列的开篇,主要关注多线程以及线程池。 一切要从 CPU 说起 你可能会有疑问,讲多线程为什么要从 CPU 说起呢?原因很简单,在这里没有那些时髦的概念,你可以更加清晰的看清问题的本质。 CPU 并不知道线程、进程之类的概念。 CPU 只知道两件事: 1. 从内存中取出指令 2. 执行指令,然后回到 1 你看,在这里 CPU 确实是不知道什么进程、线程之类的概念。 接下来的问题就是 CPU 从哪里取出指令呢?答案是来自一个被称为 Program Counter( 简称 PC)的寄存器,也就是我们熟知的程序计数器...
29 天前 / death00
今天在查看服务器时,发现机器上稳定的会有 3 ~ 4 个线程处于阻塞状态,感觉应该是有问题的,仔细排查了一下,最终发现和 Class.forName 有关。 现象某一天突然收到了公司的系统提醒,说是我们的服务中,长时间都有好几个处于 BLOCKED 状态的线程。 因为我们的访问量还是不小的,因此写了一段代码模拟了一下,大致类似于: import java.beans.BeanInfo; import java.beans.Introspector; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; import java.util.co...
46 天前 / PerfMa
召回引擎扩大了召回量,导致排序请求的 item 数量增加了。 三、出问题的模型基于 XGBoost 预测的全排序模型。 四、项目介绍 web-rec-model:模型服务平台。用于管理排序模型:XGBoost、TensorFlow、pmml…召回模型:item2item,key2item,vec2item…等模型的上下线、测试模型一致性、模型服务等。 五、一次排序请求流程 1、如下图所示,一次排序请求流程包含:特征获取、向量获取、数据处理及预测。以上提到的三个步骤均采用多线程并行处理,均以子任务形式执行。
74 天前 / 铭毅天下001
1、实战问题来源问题 1:大佬们 GET /_nodes/hot_threads 查看热线程的这个 API 有没有讲解请求结果的文章呢?返回一堆堆栈看不懂。..... 问题 2:ES 集群就一台机器 CPU 爆高,但 IO、heap_mem 都正常。咋搞?hot_thread 我查了,报了一坨,SOS 死磕 Elasticsearch 知识星球微信群 于是就有了这篇文章。 2、hot_threads 干什么的?能吃吗?实战业务场景中,当我们遇到集群响应比平常慢且 CPU 使用率高时,我们需要做问题排查,找到根因集群才能恢复“如丝般流畅"。 Elasticsearch 提供了监视热线程的能力,以便能够了解问题所在。
75 天前 / 尹千觞
第二篇它来了,老规矩,公众号回复【RPC】 获取完整 PPT 。 附代码: package main import ( "fmt" "sync" ) // // Several solutions to the crawler exercise from the Go tutorial // https://tour.golang.org/concurrency/10 // // // Serial crawler // func Serial(url string, fetcher Fetcher, fetched map[string]bool) { if fetched[url] { return } fetched[url] = true urls, err := fetcher.Fetch(url) if err != nil { return } for _, u := range urls { Serial(u, fetcher, fetched) } ...
90 天前 / luoxn28
戳蓝字「TopCoder」关注我们哦! 编者注:想必很多小伙伴们对 ThreadLocal 并不陌生,ThreadLocal 叫做线程本地变量,也就是 ThreadLocal 为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。 那么,我们使用 ThreadLocal 一定线程安全么?话不多说,先上结论: 如果 threadlocal.get 之后的副本,只在当前线程中使用,那么是线程安全的;如果对其他线程暴露,不一定是线程安全的。 为了演示下错误的使用方式,先看下如下代码(虽然小伙伴们都不会这样写代码 ^_^): static class Container { int num;}public static void mai...
173 天前 / OPPO互联网技术
服务端通常需要支持高并发业务访问,如何设计优秀的服务端网络 IO 工作线程 / 进程模型对业务的高并发访问需求起着至关重要的核心作用。 本文总结了了不同场景下的多种网络 IO 线程 / 进程模型,并给出了各种模型的优缺点及其性能优化方法,非常适合服务端开发、中间件开发、数据库开发等开发人员借鉴。 1. 线程模型一:单线程网络 IO 复用模型 说明: 所有网络 IO 事件 (accept 事件、读事件、写事件)注册到 epoll 事件集 主循环中通过 epoll_wait 一次性获取内核态收集到的 epoll 事件信息...
174 天前 / 尹千觞
前两天转了马士兵老师的《没错,我就是厕所所长!》,正好有朋友和我讨论一个线程打印的问题,于是今天就趁着周末们睡觉,写了个简单的实现。 题干,是这样的,通过 2 个线程,交替输出 A1B2C3....Z26 先贴出我的实现,欢迎大家和我讨论 public class TwoThread2 { public static class Printer{ public synchronized void print(String i) { try { this.notify(); System.out.println(Thread.currentThread().getName() + " " + i); this.wait(); } catch (Interr...
194 天前 / 一猿小讲
作为 Java 程序员,在技术面试时,多线程的知识多少都会被提及,这也是我面试候选人时,常聊的一个话题。 纳尼,面试中为什么常会问多线程的知识?难道面试官真的是在为难你吗? 莫急,下面一起get 其中之奥秘。 1 使用场景:引入多线程,明确职责,效率明显提升 在实际项目开发中,经常会遇到订单接收处理、发送通知等场景,研发人员经常会借助多线程的方式,来提高程序的处理性能。 例如:付款业务订单处理的场景。 如上图示意,业务处理流程很简单,通过多线程的方式接收业务订单,然后落入缓冲队列 MQ,最后通过多个消费线程进行付款订单的业务处理。
209 天前 / semlinker
阅读完本文你将学到以下知识: 进程与线程的区别:进程与线程的概念及单线程与多线程;浏览器内核的相关知识:GUI 渲染线程、JavaScript 引擎线程、事件触发线程等;Web Workers 是什么:Web Workers 的限制与能力及主线程与 Web Workers 之间如何通信;Web Workers 的分类:Dedicated Worker、Shared Worker 和 Service Workers;Web Workers API:Worker 构造函数及如何观察 Dedicated Worker 等。下面我们开始步入正题,为了让大家能够更好地理解和掌握 Web Workers,在正式介绍 Web Workers 之前,我们先来介绍一些与 Web Workers 相关的基础知识。
220 天前 / 编程技术宇宙
CPU 里的时间 Hi,好久不见,我是 CPU 一号车间的阿 Q,不认识我的话,可以看看:完了!CPU 一味求快出事儿了! 真的是好久不见了,人类有个说法叫天上一天,地上一年,而在我们的世界里,人类一天,我们不知要过多少年~~ 图源网络,侵删在我所在的 CPU 这座工厂里,时间的概念有些不太一样。工厂大门外的中央广场上挂着一个大大的钟表,整个计算机世界里的居民能够掐着时间过日子全都仰仗它,你们人类把它叫做晶振。 这个钟表每隔 66000000 分之一秒就会报一次时,比人类的钟表不知道快到哪里去了。