notommorrow 最近的时间轴更新
notommorrow

notommorrow

V2EX 第 545026 号会员,加入于 2021-05-11 13:09:40 +08:00
notommorrow 最近回复了
@IsanHu 可以长期在家办公吗
简历需要中文还是英文丫
WFH 可以几天丫
有苏州的岗位嘛
143 天前
回复了 vjnjc 创建的主题 酷工作 [上海][TapTap][20K - 50K] 服务端 Java
每周可以 WFH 一两天吗
157 天前
回复了 kingofzihua 创建的主题 Linux 问一个协程方面的问题
协程是线程的实现之一
操作系统本身支持了线程和线程的调度,各种语言在实现自己的线程时通常会三类:
A. 程序线程 : 操作系统线程 1:1 , 即程序中的一个线程就对应操作系统的一个线程。这样程序就可以把线程的调度完全交给操作系统。但是 1.操作系统的线程数是有限的,因此 Java 可创建的线程数也是有限的,向 tomcat 常见的线程数量是几十个。2. 操作系统调度时,要从用户态切换成内核态,代价高(代价高是相对另外两种方式来说)
Java 之前的主流线程框架就是这么做的。一个典型的列子是,给 Java Thread 设定 Priority 不一定能生效。因为对 Thread 的 Priority 的处理是操作系统在处理。比如 Java 有 10 个 Priority 可能操作系统只有 5 个 Priority 。

B. (协程)程序线程和 :操作系统线程 N:1 , 即程序线程的调度完全由 程序自己处理,不依赖操作系统的线程调度。这样的好处:1. 线程数量不受限制 2. 线程调度不用切换用户态到系统态 。 坏处: 线程调度实现很麻烦。线程状态保存和恢复很复杂,一种常见的折中方案是,协程只支持无状态的函数式调用。

C: 程序线程 :操作系统线程 N:M, A ,B 折中


为什么需要协程: 协程在 java 里很早就被实现过 作为 Greed Thread 的概念。但是使用的不多,很快被废弃了。这些年微服务兴起,一个 web call 通常要数个 micro service 合作才能完成,http 请求数量指数级上升。微服务的特点, http 请求多,单个请求的处理时间短。这时候如果依靠 1:1 的线程实现,由于线程数量有限,当 http 请求数量超过一定数量级时,一个 http 请求在等待和调度上花费的时间甚至会超过任务执行所需的时间。 这时候很多人就希望一种线程方案,他能支持更多的线程个数,调度时间代价更少 -》 协程
工作时间大概是咋样的
有 java 岗吗
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1309 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 18:41 · PVG 02:41 · LAX 11:41 · JFK 14:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.