美文网首页Java互联网科技Java 杂谈
十分钟看懂:Java并发——协程

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

作者: Java高级架构狮 | 来源:发表于2019-07-11 20:50 被阅读11次

协程

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

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模式非常简单,模式越简单,功能就越稳定,可理解性也越好

echo程序

import (
 "log"
 "net"
)
// 使用Thread-Per-Message模式,为每个成功建立连接的Socket分配一个协程
// 相对于Java线程池的实现方案,Go协程的方案更简单
func main() {
    // 监听本地9090端口
    socket, err := net.Listen("tcp", "127.0.0.1:9090")
     if err != nil {
     log.Panicln(err)
}
defer socket.Close()
 for {
    // 处理连接请求
    conn, err := socket.Accept()
     if err != nil {
     log.Panicln(err)
}
// 处理已经成功连接的请求
go handleRqeust(conn)
}
}
// 处理已经成功连接的请求
func handleRqeust(conn net.Conn) {
defer conn.Close()
 for {
buf := make([]byte, 1024)
 // 读取请求数据
size, err := conn.Read(buf)
 if err != nil {
 return
 }
 // 回写读取到的数据
_, _ = conn.Write(buf[:size])
}
}

写在最后

  • 第一:看完点赞,感谢您的认可;
  • ...
  • 第二:随手转发,分享知识,让更多人学习到;
  • ...
  • 第三:记得点关注,每天更新的!!!
  • ...

相关文章

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

    协程 协程可以理解为一种轻量级的线程 从操作系统的角度来看,线程是在内核态中调度的,而协程是在用户态调度的,协程的...

  • Go 并发编程:Goroutine常见应用范式

    一、多独立协程并发——worker分工模式 并发协程独立运行且互不通信,主协程等待处理独立子协程的结果 并发编程有...

  • Kotlin协程(1)协程介绍

      协程与线程类似,都可以处理并发任务。协程在很多语言中都支持,但 Java 中并没有协程,而 kotlin 中是...

  • 第六天

    一、并发编程 并发与并行(并发时间片轮询)资源竞争 1、goruntine协程 主协程退出了其他协程也跟着退出 主...

  • 【Golang】通道channel

    Java的并发:基于线程Golang的并发:基于协程goroutine 并发会导致资源竞争:加锁防止资源竞争的三种...

  • 关于协程开发

    协程: 1.什么是协程 协程,经常被称为微线程,纤程,是一种多任务并发的操作手段定义:协程是运行在单线程中的并发程...

  • Go Goroutine

    协程并发 Go并发 什么是goroutine

  • 【Go 精选】并发编程实战 - 协程

    1.协程的概念 Go 应用程序并发处理的部分被称作 goroutines(协程),可以进行更有效的并发运算。协程是...

  • Kotlin 并发编程之"协程"

    Kotlin 并发编程之"协程" Kotlin协程简介 Kotlin, as a language, provid...

  • 36.Python并发编程之协程

    Python并发编程之协程 协程协程是程序级别的概念,操作系统根本就没有协程的概念!!!协程的本质就是一条线程,可...

网友评论

    本文标题:十分钟看懂:Java并发——协程

    本文链接:https://www.haomeiwen.com/subject/iajjkctx.html