ThreadLocal

28、基于ThreadLocal实现分页
ThreadLocal的概念很重要。有时间多看看。

Pager list(condition,pagesize,pageIndex);
对商品,用户进行分布都要传参数pagesize,pageindex呀。而且如果要对分页的记录进行排序还要传参数呀。

但是这些参数对我们的业务逻辑并没有太多的影响。


下面我们就介绍一种模式:threadlocal这些参数对我们界面层有影响,界面层的值传到dao层只能通过参数传。下面介绍一种能通过threadlocal来传递这些参数。
threadlocal存储的值在这三层都是有效的。
把参数从界面层传递到下层不通过参数,就要通过Threadlocal来实现了。

public class SystemContext{

  private static ThreadLocal<Integer> 

pagesize=new ThreadLocal<Integer>();
 private static ThreadLocal<Integer> 

pageIndex=new ThreadLocal<Integer>();
为每一个ThreadLocal对象添加get,set,remove方


法。
}
如:
private static ThreadLocal<Integer> pageIndex=new ThreadLocal<Integer>();
private static ThreadLocal<Integer> pageSize=new ThreadLocal<Integer>();
public static void setPageIndex(int _pageIndex){
pageIndex.set(_pageIndex);
}
public static int getPageIndex(){
return pageIndex.get();
}
public static void removePageIndex(){
pageIndex.remove();
}




而对于参数的设置就可以通过过滤器来实现了。
过滤器
SystemContextFilter
try{
  去的时候把参数设置好
}
finally{
 回来的时候把参数remove掉。
}
我们可以做的更好,可以在web.xml中设置分页的


大小和页面。


好处的分页是不添加参数。这个模式是很重要的。


再对其它对象分页进也不需要更改了。




ThreadLocal是解决线程安全问题一个很好的思路


,它通过为每个线程提供一个独立的变量副本解决


了变量并发访问的冲突问题。在很多情况下,


ThreadLocal比直接使用synchronized同步机制解


决线程安全问题更简单,更方便,且结果程序拥有


更高的并发性。

































































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值