class Channel { //消息发送通道
private static final ThreadLocal<Message> THREAD_LOCAL = new ThreadLocal<>();
public Channel() {}
public static void setMessage(Message m) {
THREAD_LOCAL.set(m);
}
public static void send() {
System.out.println("【" + Thread.currentThread().getName() + "消息发送】" + THREAD_LOCAL.get().getInfo());
}
}
class Message { //消息类
private String info;
public void setInfo(String info) {
this.info = info;
}
public String getInfo() {
return this.info;
}
}
public class ThreadLocalTest {
public static void main(String[] args) throws Exception{
// Message message = new Message();
// message.setInfo("www.baidu.com");
// Channel.setMessage(message);
// Channel.send();
new Thread(()-> {
Message msg = new Message();
msg.setInfo("Thread 1 message.");
Channel.setMessage(msg);
Channel.send();
}, "消息发送者A").start();
new Thread(()-> {
Message msg = new Message();
msg.setInfo("Thread 2 message.");
Channel.setMessage(msg);
Channel.send();
}, "消息发送者B").start();
new Thread(()-> {
Message msg = new Message();
msg.setInfo("Thread 3 message.");
Channel.setMessage(msg);
Channel.send();
}, "消息发送者C").start();
}
}