当前位置: 首页 > news >正文

深圳宝安区疫情最新消息今天电脑优化大师有用吗

深圳宝安区疫情最新消息今天,电脑优化大师有用吗,开发一个商城网站多少钱,政务公开 网站建设1. ThreadLocal的使用方式 (1) 在关联数据类中创建private static ThreadLocal 在下面的类中,私有静态 ThreadLocal 实例(serialNum)为调用该类的静态 SerialNum.get() 方法的每个 线程维护了一个“序列号”,该方法将返回当前…

1.  ThreadLocal的使用方式 

(1)  在关联数据类中创建private static ThreadLocal 

在下面的类中,私有静态 ThreadLocal 实例(serialNum)为调用该类的静态 SerialNum.get() 方法的每个

线程维护了一个“序列号”,该方法将返回当前线程的序列号。(线程的序列号是在第一次调用 SerialNum.get() 时

分配的,并在后续调用中不会更改。) 

public class SerialNum {

 // The next serial number to be assigned   

 private static int nextSerialNum = 0;   

 private static ThreadLocal serialNum = new ThreadLocal() {     protected synchronized Object initialValue() {   

 return new Integer(nextSerialNum++);   

 }   

 };   

 public static int get() {   

 return ((Integer) (serialNum.get())).intValue();   

 }   

}

另一个例子,也是私有静态 ThreadLocal 实例: 

public class ThreadContext {

  private String userId;

  private Long transactionId; 

  private static ThreadLocal threadLocal = new ThreadLocal(){ 

@Override

 protected ThreadContext initialValue() {

 return new ThreadContext(); 

 }

 }; 

 public static ThreadContext get() {

 return threadLocal.get(); 

 } 

 public String getUserId() {

 return userId; 

 } 

 public void setUserId(String userId) {

 this.userId = userId;

 } 

 public Long getTransactionId() {

 return transactionId;

 } 

 public void setTransactionId(Long transactionId) {

 this.transactionId = transactionId;

 } 

}

补充:JDKAPIThreadLocal说明。举例线程唯一标识符’

UniqueThreadIdGenerator ,大家习是结合官API 

2.  在Util类中创建ThreadLocal 

这是上面用法的扩展,即把ThreadLocal的创建放到工具类中。 

public class HibernateUtil { 
 private static Log log = LogFactory.getLog(HibernateUtil.class); 
 private static final SessionFactory sessionFactory;     //定义SessionFactory

 static {

 try {

 // 通过默认配置文件hibernate.cfg.xml创建SessionFactory
 sessionFactory = new Configuration().configure().buildSessionFactory();  } catch (Throwable ex) { 

 log.error("初始化SessionFactory失败!", ex);

 throw new ExceptionInInitializerError(ex); 

 }

 }

 //创建线程局部变量session,用来保存Hibernate的Session
 public static final ThreadLocal session = new ThreadLocal();

 /**

 * 获取当前线程中的Session

 * @return Session

 * @throws HibernateException 

 */
 public static Session currentSession() throws HibernateException {

 Session s = (Session) session.get(); 

 // 如果Session还没有打开,则新开一个Session 

 if (s == null) {

 s = sessionFactory.openSession(); 

 session.set(s);         //将新开的Session保存到线程局部变量中 

 }

 return s;

 }

 public static void closeSession() throws HibernateException {  //获取线程局部变量,并强制转换为Session类型 

 Session s = (Session) session.get(); 

 session.set(null);

 if (s != null)

 s.close();

 }

}

3.  在Runnable中创建ThreadLocal 

在线程类内部创建ThreadLocal,基本步骤如下: 

①、在多线程的类(如ThreadDemo类)中,创建一个ThreadLocal对象threadXxx,用来保存线程间

需要隔离处理的对象xxx。 

②、在ThreadDemo类中,创建一个获取要隔离访问的数据的方法getXxx(),在方法中判断,若

ThreadLocal对象为null时候,应该new()一个隔离访问类型的对象,并强制转换为要应用的类型 

③、在ThreadDemo类的run()方法中,通过调用getXxx()方法获取要操作的数据,这样可以保证每个线

程对应一个数据对象,在任何时刻都操作的是这个对象。 

public class ThreadLocalTest implements Runnable{

 ThreadLocal<Studen> studenThreadLocal = new ThreadLocal<Studen>();

 @Override

 public void run() {
 String currentThreadName = Thread.currentThread().getName();  System.out.println(currentThreadName + " is running...");

 Random random = new Random(); 

 int age = random.nextInt(100); 
 System.out.println(currentThreadName + " is set age: "  + age);
 Studen  studen = getStudent(); //通过这个方法,为每个线程都独立的 new 一个 student 对象,每个线程的的

student对象都可以设置不同的值 

 studen.setAge(age);
 System.out.println(currentThreadName + " is first get age: " + studen.getAge());  try {

 Thread.sleep(500); 

 } catch (InterruptedException e) {

 e.printStackTrace(); 

 }
 System.out.println( currentThreadName + " is second get age: " + studen.getAge());

 }

 private Studen getStudent() { 

 Studen studen = studenThreadLocal.get(); 

 if (null == studen) {

 studen = new Studen(); 

 studenThreadLocal.set(studen); 

 }

 return studen;

 }

 public static void main(String[] args) { 

 ThreadLocalTest t = new ThreadLocalTest();

 Thread t1 = new Thread(t,"Thread A"); 

 Thread t2 = new Thread(t,"Thread B"); 

 t1.start();

 t2.start();

 }

}

class Studen{

 int age;

 public int getAge() {

 return age;

 }

 public void setAge(int age) { 

 this.age = age;

 }

http://www.mmbaike.com/news/90753.html

相关文章:

  • 类似淘宝的网站怎么做的长尾词挖掘
  • 营销型集团网站建设渠道推广有哪些方式
  • 遵义城乡建设网站爱站工具包的模块
  • 网站做多少屏合适代写企业软文
  • 医疗网站设计方案网站建设及推广优化
  • 四川蓉合建设公司网站深圳信息公司做关键词
  • 开网店的流程及程序网站seo排名优化工具在线
  • 南宁3及分销网站制作百度信息流投放
  • 网站建设维护 微信重庆seo排名技术
  • 宽带办理怎么做优化关键词
  • 家电网站策划大数据分析培训机构
  • 响应式地方网站app推广策划方案
  • 网站排名怎么做的seo基础入门视频教程
  • 如何在云服务器上搭建网站app下载推广
  • 做视频发哪个网站赚钱上线了建站
  • 施工企业安全总监职责履行情况淘宝怎样优化关键词
  • 网站开发策划全国疫情最新公布
  • 专业网站建设制作价格网推是干什么的
  • 天津网站建设方案报价发广告推广平台
  • wordpress个人博客前台模板下载自学seo大概需要多久
  • wordpress照片展示江苏企业seo推广
  • 知名网站制作服务优化网站的方法
  • 沈阳网站建设开发网络营销课程总结1500字
  • 电子政务网站建设的特点长沙专业做网站公司
  • 用java怎么做游戏下载网站友情链接交易平台源码
  • 在线制作网站乔拓云b2b网站推广优化
  • 关于网站建设的调查问卷seo网站推广
  • wordpress4.9下载seo技术专员招聘
  • 自己做网站赚流量钱济南做网站公司哪家好
  • 北京自助建站系统百度指数关键词未收录怎么办