设计模式之避免共享的设计模式Immutability(不变性)模式
设计模式之并发特定场景下的设计模式 Two-phase Termination(两阶段终止)模式
设计模式之避免共享的设计模式Copy-on-Write模式
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
线程局部变量:TSS 可以用于保存线程局部变量,这在并发编程中非常有用。例如,在Web应用程序中,需要为每个Http请求创建一个独立的线程,而TSS 可以被用来存储和维护与每个请求相关的数据。
日志跟踪:在多线程环境中进行日志跟踪时,每个线程可以有自己的日志对象,这样可以避免日志输出混乱和线程之间的干扰。
上下文信息:TSS 可以用于保存线程特定的上下文信息,比如用户身份验证状态、语言偏好、或者其他与线程相关的上下文信息。
连接池管理:在数据库连接池等资源池管理中,TSS 可以用于为每个线程保留其拥有的数据库连接,确保数据库连接的独立性和线程安全性。
执行跟踪:在分布式系统或者异步处理中,TSS 可以用于存储执行上下文信息,保持线程执行跟踪的一致性。
SimpleDateFormat 不是线程安全的,那如果需要在并发场景下使用它,有一个办法就是用 ThreadLocal 来解决。
public class ThreadLocalSimpleDateFormatExample {
// 创建一个ThreadLocal对象来存储SimpleDateFormat实例
private static ThreadLocal<SimpleDateFormat> threadLocalSdf = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
// 格式化日期
public static String formatCurrentDate() {
SimpleDateFormat sdf = threadLocalSdf.get();
return sdf.format(new Date());
}
// 线程执行的任务
public static class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Formatted date: " + formatCurrentDate());
}
}
public static void main(String[] args) throws InterruptedException {
// 创建多个线程并执行任务
Thread t1 = new Thread(new MyRunnable());
Thread t2 = new Thread(new MyRunnable());
t1.start();
Thread.sleep(10000);
t2.start();
}
}