【Java高并发最佳实践】线程安全的单实例模式
2018-03-01 14:24
417 查看
参考资料:
高并发下线程安全的单例模式(最全最经典)
高并发Java(7):并发设计模式 http://www.importnew.com/21312.html
1.单实例模式的线程安全的两种上佳实践:
2.测试方法:
3.测试结果:相同的实例哈希值表示始终都是同一个实例。
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
高并发下线程安全的单例模式(最全最经典)
高并发Java(7):并发设计模式 http://www.importnew.com/21312.html
1.单实例模式的线程安全的两种上佳实践:
public class SQLFactory { private Logger logger = LoggerFactory.getLogger(getClass());//Log.getLog(getClass()); /*//old method not thread-safe private static SQLFactory instance = null; public static SQLFactory getInstance() { if (instance == null) { instance = new SQLFactory(); } return instance; } */ //thread-safe best practice public static SQLFactory getInstance() { return SQLHolder.instance; } private static class SQLHolder { private static SQLFactory instance = new SQLFactory(); } /*//also good thread-safe volatile private static SQLFactory instance = null; public static SQLFactory getInstance() { synchronized (SQLFactory.class) { if (instance == null) { instance = new SQLFactory(); } } return instance; }*/ }
2.测试方法:
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import com.highgo.admin.migrator.controller.SQLFactory; public class TestThreadSafe { public void doing() { System.out.println(SQLFactory.getInstance().hashCode()); } public static void main(String[] args) { ThreadPoolExecutor threadPool = new ThreadPoolExecutor(4, 8, 101, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(2000)); final TestThreadSafe tf = new TestThreadSafe(); for (int i = 0; i < 10; i++) { threadPool.submit(() -> { tf.doing(); }); } } }
3.测试结果:相同的实例哈希值表示始终都是同一个实例。
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
1090303302
相关文章推荐
- Java并发编程实践笔记之-什么是线程安全
- JAVA 单实例最佳实践
- JAVA 单实例最佳实践
- java并发编程实践_02线程安全
- Java枚举类-行为模式最佳实践
- Java并发编程实践-第二章-线程安全
- Java中单例设计模式之最佳实践举例
- 【Java高并发最佳实践】ConcurrentHashMap的遍历方法
- Java中单例设计模式之最佳实践举例
- 并发模式Future ,JAVA内置模块Callable接口实现 实例
- JAVA 单实例最佳实践
- 【Java并发编程实践】— 线程安全
- java并发之Fork/Join实例
- 深夜闲聊Java与PHP 以及架构设计思想与最佳实践
- Java常用的设计模式09:单例模式的强化(控制实例个数n)
- Java程序优化的一些最佳实践(转)
- 避免Java程序中NullPointerException的技巧和最佳实践
- Java 的双重分发与 Visitor 模式实例详解
- Java并发编程实践笔记之—不变性(Immutability)
- 避免Java应用中NullPointerException的技巧和最佳实践