多线程
javafanwk
专注微服务架构,熟悉react、大数据、云计算,喜欢看java编程思想,设计模式,算法等书,希望通过我的努力减少代码量,提高java的标准化,提高程序的稳定度,认真搞技术,一直在路上,希望大家共同前行,进步。。。
展开
-
Redission
lock()常用,有自动续期机制,所以不会出现锁到期多个线程进入业务代码的情况。需要手动解锁,否则会死锁,效率上比trylok高。但是没有trylok灵活 lock(long var1, TimeUnit var3)不常用, 到期自动解锁,会出现锁到期多个线程进入业务代码的情况,但是不会死锁,因为到期自动解锁 trylok(long var1,long var2,TimeUnit t)常用,灵活度高,可以设置获取不到锁做相应的代码处理或异常处理,需要手动解锁 String lockKey = "l..原创 2021-12-22 11:58:23 · 303 阅读 · 0 评论 -
ThreadLocal
springboot中server.tomcat.min-spare-threads中的默认值为10,如果你没有clear(),那么每十个请求后 你就会拿到原来的线程以及存储在线程中的变量。 threadLocal.get().clear(); threadLocal.get().put("precision", precision); ThreadLocal的remove()方法会先将Entry中对key的弱引用断开,设置为null,然后再清除对应的key为null的value。 th.原创 2021-12-22 11:49:15 · 130 阅读 · 0 评论 -
Callable和DeferredResult
DeferredResult和Callable都是为了异步生成返回值提供基本的支持。简单来说就是一个请求进来,如果你使用了DeferredResult或者Callable,在没有得到返回数据之前,DispatcherServlet和所有Filter就会退出Servlet容器线程,但响应保持打开状态,一旦返回数据有了,这个DispatcherServlet就会被再次调用并且处理,以异步产生的方式,向...原创 2018-05-30 16:02:49 · 848 阅读 · 2 评论