作者回复: 是的,有些设计模式更多的是优化代码逻辑结构,但还是有很多设计模式也起到了优化性能效果。例如,文中的Worker-Thread 设计模式其实就是一种线程池的优化方式,在并发量大时,一般的代码逻辑要么是串行执行,要么使用创建线程并发执行,在大量并发时两者都可能会出现性能瓶颈,而这种Worker-Thread 这样的设计方式则即可以并发执行,又避免创建过多的线程导致性能瓶颈。
作者回复: 很赞
作者回复: 我们在之前也讲过reactor模式,reactor模式是基于事件驱动,并且有专门有一个监听线程池监听事件,一旦有事件进来,将会再通过handler线程池来处理具体的业务,实现更为复杂,性能要比thread-per-message更佳
作者回复: 是的,多余了
作者回复: 我记得大学时候读过一本《大话设计模式》的书籍不错,讲解的通俗易懂。
作者回复: 对的,分析的很到位。下一讲中我们会详细聊到生产者消费者模式。
作者回复: 赞,现学现用
作者回复: 是的,原理都是生产者消费者模式。
作者回复: 这个性能我猜是说的相对的,只是说System.currentTimeMillis() 性能损耗更大
作者回复: 异步是有场景条件的,例如,异步调用用户不需要感知结果,或者用户的客户端与服务端是一个tcp长连接,处理之后由服务端推送处理结果给用户。
作者回复: 实现的基本原理是一样的
作者回复: 对的,例如读写分离,ThreadLocal存放了读从库数据源和写主库数据源,如果是查询操作,则切换为读数据源,如果是新增修改删除操作,则切换为写数据源。
作者回复: 我们对put take方法已经加锁了,所以是线程安全的。
作者回复: 1、替换之后,“是否偏向锁”标志位设置为 1;
2、如果获取锁失败,代表当前锁有一定的竞争,偏向锁将升级为轻量级锁;
3、是的;
4、标志位为00;
5、如果是锁释放轻量级锁,直接将指向轻量级锁的指针置为null就可以了;
6、这个是轻量级升级为重量级就会带过来的,暂时没有观察到具体的作用
作者回复: 可以通过Future模式拿到返回结果,虽然是异步执行,如果要等待返回结果,则主线程还是在阻塞等待。