java吧 关注:1,248,820贴子:12,731,516

有没有大神给讲讲虚拟线程?

只看楼主收藏回复

java21马上就要出了,这个虚拟线程看起来好牛逼,有没有大佬讲讲,或者有好文章推荐推荐~


IP属地:辽宁1楼2023-07-22 11:11回复
    JEP 444: 虚拟线程 (openjdk.org)给大家分享个讲解的网址


    IP属地:辽宁2楼2023-07-22 11:13
    回复
      本人java小白,crud为主,不懂多线程....


      IP属地:辽宁3楼2023-07-22 11:14
      收起回复
        没人吗?我自己来


        IP属地:辽宁4楼2023-07-22 15:14
        回复
          b站极海大佬的视频,简单的讲了一下整个过程 :
          虚拟化出来一个平台线程(VT),这个平台线程跟操作系统的内核线程(OS Thread)是相关的,具体的虚拟线程是由这个平台线程去做调度.
          在jdk层面调度的逻辑 :
          如果创建了一个虚拟线程,我们可以把它挂载,或者叫做安装到这个平台线程上,然后再由这个平台线程绑定的内核线程去做调度,多个虚拟线程就可以对应同一个平台线程.假如某一个虚拟线程遇到了一些IO的事件要去等待,阻塞的时候,它就可以让出资源,让这个平台线程再去调度其他的虚拟线程.在程序看来,每一个虚拟线程他有自己的同步代码块,自己的堆栈(栈).这个线程的上下文和它的调度就不是由操作系统直接去接管,而是由jdk里面它自己的调度器去进行调度的.Java虚拟机怎么去保证每一个虚拟线程它自己的上下文切换和它自己的现场的保护,被平台线程接管了之后,那空闲这个虚拟线程它会把它的栈空间移动到堆上面去,然后这个平台线程再去装载其他的虚拟线程,要去恢复其他虚拟线程的一个栈空间,只要把它从堆上面再复制回来.


          IP属地:辽宁5楼2023-07-22 15:24
          回复
            下面的图可以参考一下,我没太看懂


            IP属地:辽宁6楼2023-07-22 15:25
            回复
              谁讲接了喊我一下


              IP属地:江西来自Android客户端7楼2023-07-22 16:36
              收起回复
                详细的还是得找找资料呀。 建议先从县城这一块了解起来,然后看一下在传统情况下县城都有哪些痛点,然后再过渡到虚拟县城就容易很多了。作为参考,类似的实现方案,还有其他语言里面的携程。


                IP属地:广东来自Android客户端8楼2023-07-22 16:45
                收起回复
                  不用关心新技术,小公司用不到,大公司不敢用


                  IP属地:浙江来自Android客户端9楼2023-07-22 16:45
                  收起回复
                    有啥应用场景?我觉得好像没啥应用场景。


                    IP属地:湖南来自Android客户端10楼2023-07-22 23:26
                    收起回复
                      周一愉快,打工人


                      IP属地:辽宁11楼2023-07-24 08:28
                      回复
                        传统的线程和系统线程是一 一对应的关系,但是这个资源很稀缺,所以之前采用池化技术,但即使这样并发量吞吐量还是那么点.
                        虚拟线程是创造了一个平台线程,每个平台线程可以去调用很多个虚拟线程,然后由平台线程和系统线程去映射.
                        这是我的粗浅理解


                        IP属地:辽宁12楼2023-07-24 08:31
                        回复
                          虚拟化出来一个平台线程(VT),这个平台线程跟操作系统的内核线程(OS Thread)是相关的,具体的虚拟线程是由这个平台线程去做调度.
                          在jdk层面调度的逻辑 :
                          如果创建了一个虚拟线程,我们可以把它挂载,或者叫做安装到这个平台线程上,然后再由这个平台线程绑定的内核线程去做调度,多个虚拟线程就可以对应同一个平台线程.假如某一个虚拟线程遇到了一些IO的事件要去等待,阻塞的时候,它就可以让出资源,让这个平台线程再去调度其他的虚拟线程.在程序看来,每一个虚拟线程他有自己的同步代码块,自己的堆栈(栈).这个线程的上下文和它的调度就不是由操作系统直接去接管,而是由jdk里面它自己的调度器去进行调度的.Java虚拟机怎么去保证每一个虚拟线程它自己的上下文切换和它自己的现场的保护,被平台线程接管了之后,那空闲这个虚拟线程它会把它的栈空间移动到堆上面去,然后这个平台线程再去装载其他的虚拟线程,要去恢复其他虚拟线程的一个栈空间,只要把它从堆上面再复制回来.(这段怎么总吞)


                          IP属地:辽宁13楼2023-07-24 08:40
                          收起回复
                            本末倒置 把老知识吃透了 再来捣鼓这些不着调的玩意吧


                            IP属地:广东14楼2023-07-24 10:54
                            收起回复
                              利空响应式编程


                              IP属地:上海来自iPhone客户端15楼2023-07-24 12:33
                              收起回复