java 协程_十分钟看懂:Java并发——协程

e675cfddbd01e91b6ce0dbbc656020b6.png

协程

  1. 协程可以理解为一种轻量级的线程
  2. 从操作系统的角度来看,线程是在内核态中调度的,而协程是在用户态调度的,协程的切换成本更低
  3. 协程栈比线程栈要小得多,典型的线程栈在1M左右,而协程栈一般在几K或者几十K左右
  4. 因此无论在时间维度还是在空间维度,协程都比线程轻量很多
  5. 支持协程的语言:Go、Python、Lua、Kotlin
  • Java OpenSDK的Loom项目的目标是为了支持协程
1faf026fa0b52b7cc40cd4df06236a4e.png

Go中的协程

func TestCoroutine(t *testing.T) { // 在新的协程中执行hello方法 go hello("Go") // 等待100毫秒让协程执行结束 time.Sleep(100 * time.Millisecond)}
  1. Java中的线程是一个重量级对象,因此无法很好地实现Thread-Per-Message模式,而协程可以
  2. Thread-Per-Message模式非常简单,模式越简单,功能就越稳定,可理解性也越好
1c5f5f0c267eb8098acd8c4f83b96e14.png

echo程序

import ( "log" "net")// 使用Thread-Per-Message模式,为每个成功建立连接的Socket分配一个协程// 相对于Java线程池的实现方案,Go协程的方案更简单func main() { // 监听本地9090端口 socket, err := net.Listen("tcp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值