线程安全问题
来源:19-2 策略模式coding
孤独观测者
2021-02-23
老师 这里把promotionStrategy传递给类变量 然后下一步再调用executePromotionStrategy方法
如果在多线程种,会不会在调用executePromotionStrategy方法的时候,类变量promotionStrategy已经被其他线程给覆盖了
写回答
1回答
-
geelylucky
2021-02-28
问题提的很棒同学~
对于变量的线程安全问题 可以使用线程封闭的思路
默认传入promotionStrategy 的这个变量对于单个线程 如果是new 构建的,是线程私有的那么就不会出现线程安全问题
策略模式一般会配合spring的bean使用,spring 的bean默认单例是不会出现线程安全的
如果不使用spring 声明bean,只要不是先构造一个promotionStrategy ,传入多线程执行的任务中也不会的
badcase 是将promotionStrategy 作为参数传入多线程的task中 会出现线程不安全的问题
另外 jdk中也提供了threadloacl 工具类可以避免这个问题,可以将promotionStrategy 使用threadlocal包装后再传入线程task中也能保证线程安全
00
相似问题
8-9的问题
回答 1
容器单例是不是只适用在懒汉模式中
回答 1