ThreadLocal

ThreadLocal并不是一个Thread,而是Thread的局部变量。

ThreadLocal为每个线程提供一个单独的存储空间,具有线程隔离效果,只有在线程内才能获取对应的值,线程外不能访问。

在Tomcat中每次请求都会开辟一个不同的线程。这里我们可以使用

  System.out.println(Thread.currentThread().getId());

来观察线程,每一次发送请求,jwt检验处,controller/service层都会使用相同的线程,但是一旦再次发送请求,线程就会转变

ThreadLocal有三个常用方法:set/get/remove

在mybatis分页插件的page中有下面一方法,就是使用了threadlocal。通过这个对象把page与pagesize存在空间内,在后面动态取出并拼接


protected static final ThreadLocal<Page> LOCAL_PAGE = new ThreadLocal();
protected
static void setLocalPage(Page page) { LOCAL_PAGE.set(page); }

 

posted @ 2024-01-20 21:55  天启A  阅读(6)  评论(0)    收藏  举报