V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cbdyzj
V2EX  ›  Java

Java 21 今日 GA,有虚拟线程(协程)

  •  1
     
  •   cbdyzj · 2023-09-19 10:00:02 +08:00 · 5059 次点击
    这是一个创建于 432 天前的主题,其中的信息可能已经有所发展或是发生改变。
    36 条回复    2024-05-07 15:23:51 +08:00
    nikenidage1
        1
    nikenidage1  
       2023-09-19 10:04:59 +08:00   ❤️ 16
    他强任他强,清风拂山岗;他发由他发,我用爪哇八.
    SwinBlackSea
        2
    SwinBlackSea  
       2023-09-19 10:09:20 +08:00
    蛮怪的
    brettcao
        3
    brettcao  
       2023-09-19 10:12:51 +08:00
    ~~,java8 没人愿意升级
    chuck1in
        4
    chuck1in  
       2023-09-19 10:29:04 +08:00
    刚出来还是不太敢用。追新的话最好先用 jdk17 等过两年再上 21 稳妥。
    BaseException
        5
    BaseException  
       2023-09-19 10:42:32 +08:00   ❤️ 1
    在用 11 和 17 了。新特性没用上啥,还是 java8 的那套熟悉……
    iloveayu
        6
    iloveayu  
       2023-09-19 10:44:31 +08:00 via iPhone
    2031 年以后再说
    xianyv
        7
    xianyv  
       2023-09-19 10:45:32 +08:00
    公司还是 java8 那一套, 公司不升级只能自己玩一下了
    anguliuyun
        8
    anguliuyun  
       2023-09-19 10:46:22 +08:00
    @nikenidage1 好湿好湿
    28Sv0ngQfIE7Yloe
        9
    28Sv0ngQfIE7Yloe  
       2023-09-19 10:54:30 +08:00
    有大佬通俗易懂的分享下这个和 golang 协程的区别吗?
    zhouhu
        10
    zhouhu  
       2023-09-19 10:56:27 +08:00
    分代 ZGC 没人关注吗
    Leviathann
        11
    Leviathann  
       2023-09-19 10:58:23 +08:00
    @Morii go 自己搞了一套抢占式调度,没有结构化并发
    x1aoYao
        12
    x1aoYao  
       2023-09-19 11:02:47 +08:00
    @Leviathann Go 准确来说应该是协作式+抢占式,甚至 1.0 版本还只支持协作式
    vincent7245
        13
    vincent7245  
       2023-09-19 11:07:31 +08:00
    java8 + kilim 又不是不能用
    mmdsun
        14
    mmdsun  
       2023-09-19 11:11:32 +08:00   ❤️ 1
    @Morii 忽略 op 的话并不是协程。
    其实 goroutine 也不是协程,官方定义是 lightweight thread managed by the Go runtime.

    没有 yield 和调用者明确地指定控制权,都不算协程。
    Akitora
        15
    Akitora  
       2023-09-19 11:21:56 +08:00
    Gradle 还没支持 JDK21 ,只能继续用 20+preview 了
    x1aoYao
        16
    x1aoYao  
       2023-09-19 14:00:52 +08:00
    @mmdsun 确实没有 yield 或者 await 这些关键字,但是对 channel 的读写是可能会主动 park 当前 goroutine ,或者 notify 其他 goroutine 的,也算是有协作了。我觉得简单理解成带有抢占调度的有栈协程也没什么问题。
    leiuu
        17
    leiuu  
       2023-09-19 14:44:58 +08:00
    好事 目前我们全线基本 java17 了 下一步就准备上 21 了
    whrss9527
        18
    whrss9527  
       2023-09-19 16:17:07 +08:00
    @vincent7245 Java8+Kotlin?
    whrss9527
        19
    whrss9527  
       2023-09-19 16:19:40 +08:00
    @vincent7245 google 了下,学习到了
    twofox
        20
    twofox  
       2023-09-19 16:34:21 +08:00
    我觉得升级来升级去,JVM 特性比较重要些。毕竟 Java 8 的垃圾回收已经非常落后了
    新的 ZGC 就稳的一批
    natsu94
        21
    natsu94  
       2023-09-19 16:36:37 +08:00
    Java 是时候引入 channel 了(
    layfones
        22
    layfones  
       2023-09-19 18:48:39 +08:00
    相当重磅的更新:
    虚拟线程
    ZGC
    模式匹配
    然 Java 8 乃是祖宗之法,祖宗之法不可变!!!
    ikas
        23
    ikas  
       2023-09-19 19:58:07 +08:00
    springboot2 11 月停止免费安全更新.
    可以 21+springboot3 直接一步到位了.
    txzh007
        24
    txzh007  
       2023-09-19 20:16:53 +08:00
    @leiuu 8 升 17 我都一肚子火,各种依赖冲突,升到 21 估计好多框架不支持了
    lifespy
        25
    lifespy  
       2023-09-19 23:14:09 +08:00
    lifespy
        26
    lifespy  
       2023-09-19 23:41:00 +08:00
    lombok 不兼容,会导致启动失败
    Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'

    https://github.com/projectlombok/lombok/issues/3393
    q447643445
        27
    q447643445  
       2023-09-20 01:55:46 +08:00
    如果有机会 第一时间 上 sp3 + jdk21
    都说没区别 实际上区别还是挺大的
    keepRun
        28
    keepRun  
       2023-09-20 02:28:42 +08:00
    java11 已经不少公司在用了,别再 java8 了
    leisifung
        29
    leisifung  
       2023-09-20 09:48:36 +08:00
    新项目会用最新的 LTS JDK
    luobingit
        30
    luobingit  
       2023-09-20 09:50:22 +08:00
    想想现在面试还在问 java8 新特征 就有点想笑
    emSaVya
        31
    emSaVya  
       2023-09-20 10:18:09 +08:00
    Virtual threads are lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications.

    不要拿这种 micro thread 污染 coroutine 语义了。java 早晚也会出 coroutine, 到时候你怎么翻译?
    zhouhu
        32
    zhouhu  
       2023-09-20 11:14:20 +08:00
    补充一个,堆大小为 128M:
    Time: 
    2023-09-20 11:13:18
    Used: 108,544 kbytes
    Committed: 131,072 kbytes
    Max: 131,072 kbytes
    GC time: 
     8.149 seconds on ZGC Minor Cycles (384 collections)

     0.006 seconds on ZGC Minor Pauses (1,185 collections)

    12.133 seconds on ZGC Major Cycles (61 collections)

     0.001 seconds on ZGC Major Pauses (279 collections)
    lvye
        33
    lvye  
       2023-09-20 11:44:21 +08:00
    @lifespy #26 1.18.30 发布了,已经修复这个问题了
    zhouhu
        34
    zhouhu  
       2023-09-20 12:01:09 +08:00
    ![测试图片]( https://imgur.com/a/nxo9wQv)
    knightdf
        35
    knightdf  
       2023-10-12 21:50:46 +08:00
    今天尝试更新一把,结果发现 gradle (应该说是 kotlin )还不支持 jdk 21
    harrykobe
        36
    harrykobe  
       200 天前
    @txzh007 我们 11 到 17 都一大堆问题,何况 8 到 17
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2684 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:20 · PVG 11:20 · LAX 19:20 · JFK 22:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.