ThreadLocal使用场景分析,实现原理
ThreadLocal和Synchonized都是为了解决线程并发的问题,但是ThreadLocal和Synchonized是完全相反的
ThreadLocal是为每个线程提供变量的副本,自己私有的变量
Synchonized是控制共享的变量只能在某个时间被一个线程用到
继续阅读→
ThreadLocal和Synchonized都是为了解决线程并发的问题,但是ThreadLocal和Synchonized是完全相反的
ThreadLocal是为每个线程提供变量的副本,自己私有的变量
Synchonized是控制共享的变量只能在某个时间被一个线程用到
继续阅读→
java7中,concurrentHashMap使用的是若干个segement,每个segement中又一个数组,数组下面是链表。
继续阅读→
当线程池并发任务处理时,如果使用的是同一个线程池,那么很有可能出现线程的死锁 继续阅读→
阅读全文通过Future配合Callable可以获取线程执行的结果,并且可以阻塞获取
继续阅读→
如何在所有子线程执行完后,才继续执行主线程?
继续阅读→
创建一个可缓存线程池,应用中存在的线程数可以无限大
继续阅读→
除了使用synchronized修饰代码块或者方法,还可以使用Lock方式添加锁,不过要自己释放锁。
继续阅读→
线程池的创建实际上都是同一个方法(ThreadPoolExecutor): 继续阅读→
阅读全文Thread类中定义了线程的几个状态 继续阅读→
阅读全文使用synchronized字段让部分代码或者方法串行执行
使用wait方法,让当前线程进行等待
使用notify方法通知其它线程,锁将要被释放(要等synchronized代码都执行完才释放)
继续阅读→
synchronized字段可以让部分代码,或者方法,在多个线程都要执行时,串行执行
继续阅读→
* 线程的join
* 「当前线程」中,执行「其他线程」的join方法,「当前线程」会进入阻塞,待「其他线程」执行结束后,才会往下继续执行
*
* 时用场景:
* 例如需要批量拉取不同接口的数据,然后统一返回
继续阅读→
sleep、wait的进程都可以被interrupt打断,以此可以避免死等待
阅读全文* 线程的sleep
* 线程的yield
* 线程的优先级 继续阅读→
守护线程
具备自动结束生命周期的功能
又叫后台进程,在主线程关闭时,同时跟随主线程一起关闭 继续阅读→
除了借助redis进行异步任务外,spring还提供了异步线程池自己完成异步处理任务。
Spring 提供了便捷的注解@EnableAsync,如果配置文件标注了它,那么Spring就会开启异步可用,这样就可用使用注解@Async驱动Spring使用异步调用
继续阅读→