美文网首页
dubbo 线程和锁(持续总结)

dubbo 线程和锁(持续总结)

作者: 钟mh | 来源:发表于2018-11-25 14:31 被阅读0次

线程

MonitorFilter 获得 monitor  reference

获得 reference 是个耗时操作,   MonitorCreator 是 Callable ,FutureTask 需要 get() 获取结果,dubbo 是通过添加callback 来实现的,这样不用阻塞当前线程,实现类是 listenableFutureTask ,通过名字可以看出来,添加了Listener来获得结果,需要关注2个地方

1. 

覆盖了 FutureTask 的 done() 方法

done表明线程已完成

2.

另外一个是 ExecutionList ,以后在分析,在获取 monitor reference 对象场景下,我觉得有点复杂。

ListenableFutureTask 和 guava 的实现一样 

ForkingClusterInvoker 发起多个请求,只有一个成功即返回


关键 : ref.poll(timeout, TimeUnit.MILLISECONDS);  

只取第一个结果,并且控制超时。可以通过 forks 参数控制向多少个机器发起请求, timeout 参数控制超时时间。

ReentrantLock 可重入锁

使用重入锁进行加锁是一种显式操作,通过何时加锁与释放锁使重入锁对逻辑控制的灵活性远远大于synchronized关键字。

com.alibaba.dubbo.container.Main 中,有ReentrantLock 配合 Condition 使用。

1. Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用

        1. 程序正常退出

        2. 使用System.exit()

        3. 终端使用Ctrl+C触发的中断

        4. 系统关闭

        5. 使用Kill pid命令干掉进程

2. Main 主线程, STOP.await(); 等待退出通知

应用程序无法保证shutdownHook总是运行的 (VM crash、kill -9、Runime.halt(),shutdownHook都无法运行 )

可以有多个shutdownHook,但其执行顺序无法保证

----------

Lock的await/singal 和 Object的wait/notify 的区别、比较

https://blog.csdn.net/zhang199416/article/details/70771238

https://www.cnblogs.com/alphablox/archive/2013/01/20/2868479.html

http://www.cnblogs.com/csuwater/p/5411693.html

相关文章

  • dubbo 线程和锁(持续总结)

    线程 MonitorFilter 获得monitor reference 获得 reference 是个耗时操作,...

  • Dubbo 传输协作线程

    Dubbo 传输协作线程-------DefaultFuture 用到了锁和同步队列1.客户端调度线程:用于发起远...

  • 罗列下必须掌握的互联网应用技术

    ZooKeeper 线程同步锁 redis monggoDB springboot dubbo shell脚本 L...

  • ZooKeeper分布式专题(七)-- 使用zookeeper实

    ZooKeeper分布式专题与Dubbo微服务入门 zookeeper实现分布式锁 什么多线程 多线程为了能够提高...

  • DUBBO线程模型和调度策略

    DUBBO线程模型 从官方描述来看dubbo线程模型支持业务线程和I/O线程分离,并且提供5种不同的调度策略。 拿...

  • DataFountain PHP面试

    数据库锁数据库锁方面这篇文章总结的挺好的 数据库锁总结 线程模型及原理操作系统核心原理-4.线程原理(上):线程基...

  • Java 中的各种锁

    多线程开发离不开各种锁,下面总结下Java和JDK提供的各种锁机制 synchronized synchroniz...

  • Java锁优化

    自旋锁与自适应自旋 在Java程序中锁的持有一般只会持续很短的时间,挂起和恢复线程都会产生性能损耗,让线程执行一个...

  • 3、简单锁的优化

    总结:为了防止线程处理时间超过锁的自动释放时间后,出现误删除其他线程锁的情况,会在手动删除锁的时候判断该锁是否属于...

  • Java锁详解 带demo 持续更新 2022-04-25

    Java锁详解 带demo 持续更新 1.定义 公平锁&非公平锁 (线程对锁的争夺是否按请求资源的时间顺序排序) ...

网友评论

      本文标题:dubbo 线程和锁(持续总结)

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