90javaThreadLocal类

63 阅读1分钟

【第08个代码模型】ThreadLocal类


一、学前引入

以后的项目里面ThreadLocal可以帮助减少一些重要的引用传递。

在讲解具体的概念之前首先来观察如下一段程序:

Class Message{

      Private string note;

      Public void setNote(string note){

           This. note =note;

}

 public String getNote(){

     return note;

}

}

class MessageConsumer{

public void print(message msg)//必须明确接收Message类对象

    Sestem.out.print1n(Thread.currentThread()getName()+“=”+MyUti1.message.getNote(

}

}

 

Class MyUti1 {

     Public static Message message ;

}

Public class TestDemo{

   public static void main(string[] args) throws Exception {

       new Thread(()->{

           Message msg = new Message() ;

           Msg.setNote(“www.mldn.cn”);

           MyUti1.Message =msg;

           New MessageConsumer().print();

       },“用户A”).start();

       new Thread(()->{

             Message msg = new Message() ;

Msg.setNote(“明天可以睡懒觉了!”);

           New MessageConsumer().print();

       },“用户B”).start();

   }

}

 

以上的代码之中明确的使用了引用传递将Message类的对象传递给了MessageConsumer类的print()方法。

 

 

二、ThreadLocal产生意义

如果要想明确的标记出每一个线程的具体的对象信息,就需要使用ThreadLocal,这里面实际上在进行数据保存的时候多保存了一个currentTthread。

 

本类定义如下:

Public class ThreadLocalextent Object

   而后在这个类里面有以下几个重要方法:

       ○取得数据:public T get();

       ○保存数据:public void set(T value);

       ○删除数据:public void remove();

范例:利用ThreadLocal来解决当前问题

Class MyUti1 {

     private static ThreadLocal threadlocal;

     public static void set(message msg){

       threadLocal.set(msg);

}

Public static Message get(){

   Return threadLocal.get();

}

一个项目中最重要的对象就是资源的连接信息,例如:数据库。

 

 

以后的开发ThreadLocal会作为初期项目的实现基础。