1.多线程 1.多线程 线程状态分为:新建状态、就绪状态、运行状态、阻塞状态、死亡状态 对象等待池的阻塞状态:运行状态执行了wait方法 对向锁池的阻塞状态:试图获得某个同步锁,已经被其他线程占用,就会放到对象的锁池中 其他阻塞状态:执行了sleep()方法、join方法() 线程睡眠Thread. ...
分类:
编程语言 时间:
2018-03-28 20:30:21
阅读次数:
149
在ThreadLocal的get(),set()的时候都会清除线程ThreadLocalMap里所有key为null的value。 而ThreadLocal的remove()方法会先将Entry中对key的弱引用断开,设置为null,然后再清除对应的key为null的value。 本文分析remov ...
分类:
其他好文 时间:
2018-03-27 20:55:28
阅读次数:
185
转自http://blog.csdn.net/qq_29227939/article/details/52029065 首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问 ...
分类:
数据库 时间:
2018-03-27 16:40:54
阅读次数:
176
本文以数据库操作Dao为例进行描述ThreadLocal的使用,如下是一个反例: 上面存在线程安全问题,在多个线程进行事务提交时候会出现错乱。因此可以通过如下方案: ...
分类:
编程语言 时间:
2018-03-27 12:24:19
阅读次数:
157
ThreadLocal为每个使用它的线程提供一个变量的副本。 ThreadLocal中的主要方法: public void set(T value) { Thread t = Thread.currentThread(); //取得线程t的ThreadLocalMap对象 ThreadLocalMa ...
分类:
其他好文 时间:
2018-03-26 23:32:22
阅读次数:
217
什么时候会导致不安全的分页? PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的。 只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper 在 finally 代码段中自动清除了 Threa ...
分类:
其他好文 时间:
2018-03-23 15:20:35
阅读次数:
148
package com.ctl.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Random; import java.ut ...
分类:
数据库 时间:
2018-03-22 10:49:35
阅读次数:
185
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并 ...
分类:
其他好文 时间:
2018-03-21 11:27:57
阅读次数:
132
前言 ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用 ThreadLocal,就可能会导致内存泄漏。下面,我们将围绕三个方面来分析 ThreadLocal 内存泄漏的问题 Threa ...
分类:
其他好文 时间:
2018-03-15 16:23:54
阅读次数:
153
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不 到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象, ...
分类:
其他好文 时间:
2018-03-08 10:34:40
阅读次数:
119