java吧 关注:1,179,162贴子:12,571,163
  • 6回复贴,共1

quasar是怎么实现的....

取消只看楼主收藏回复

htt防和谐ps://github.co和谐m/puniverse/quasar/blob/master/quasar-core/src/main/java/co/paralleluniverse/fibers/Fiber.java#L15
源码看不懂....这个框架是怎么在不支持纤程的jvm上实现纤程的?难道jdk里面有线程调度的相关api吗?


1楼2016-01-01 18:17回复
    而且就这个Fiber类的代码规模来看,已经不能算是A lightweight thread了吧


    2楼2016-01-01 18:19
    收起回复
      。。。看了半天源码,看到了ASM。。这个框架难道用到了动态类生成?


      3楼2016-01-01 20:19
      回复
        我看到了sun.misc.Unsafe....结合那个序列化...这个框架难道使用了操作对象内存的技术?


        5楼2016-01-01 20:43
        回复

          卧槽,这简单粗暴的.....
          quasar的线程任务片断切换都是靠sun.misc.Unsafe强行向Thread对象的内存注入和更改数据实现的吗


          6楼2016-01-01 20:59
          回复

            好像的确如此....待我继续研究


            7楼2016-01-01 21:02
            回复
              基本确定quasar的纤程调度方式是通过sun.misc.Unsafe强行操作Thread对象的内存数据这种奇技淫巧来实现的,至于asm目前感觉quasar只是用asm来做高性能的反射...不过不排除quasar会用asm动态来改变类结构或者动态生成类来迎合Fiber的调度...
              反正我不太敢用这个框架了.....


              8楼2016-01-01 21:18
              回复