- 浏览: 2095381 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (366)
- hadoop (91)
- DB (2)
- vmware (0)
- python (49)
- Java (72)
- Linux (57)
- 多线程 (2)
- hive (1)
- hbase (3)
- mongodb (5)
- Hibernate (3)
- nodejs (1)
- 模式与重构 (1)
- 持续集成CI (4)
- Mysql (2)
- chorme (1)
- 软件开发 (0)
- 敏捷 (5)
- maven (3)
- windows (7)
- 测试驱动 (1)
- scala (3)
- Jetty (0)
- android (1)
- eclipse (1)
- 设计模式 (1)
- 面向对象设计 (2)
- oracle (3)
- cassandra (15)
- pig (3)
- rails (1)
- redis (4)
- ruby (1)
- storm (0)
- 实时运算 (3)
- scribe (1)
- hadoop源码 (3)
- cassandra jna (1)
- Kafka (2)
- Sublime (2)
- C++ (2)
- C (1)
- 版本控制 (1)
- 服务器 (1)
- docker (0)
- flink (1)
最新评论
-
伍大都督:
解释太到位了,感谢分享
理解Linux系统中的load average(图文版) -
rfjian123:
非常感谢,用你的方法解决了问题。
Server sent unexpected return value (403 Forbidden) in response to OPTIONS -
yuhaifei12:
今天遇到同样的问题了。设置的是每分钟执行一次。结果发现每分钟执 ...
解决Linux下crontab同一时间重复执行问题 -
BigBird2012:
想问一下,使用ExecutorService每次都要调用 sh ...
spring quartz使用多线程并发“陷阱” -
zhuqx1130:
有用,谢谢
解决Sublime Text 3中文显示乱码(tab中文方块)问题
单线程下安全使用的Singleton示例
public class Singleton { private static Singleton instance = null; private Singleton() { System.out.println("create instance."); } public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } public static void main(String[] agrs) { new Singleton(); } }
单线程代码放到多线程下,将会出现线程不安全情况
class SingletonTestRunnable implements Runnable { public void run() { Singleton.getInstance(); } } public class Singleton { private static Singleton instance = null; private Singleton() { System.out.println("create instance."); } public static Singleton getInstance() { if (instance == null) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } instance = new Singleton(); } System.out.println("instance hashCode : " + instance.hashCode()); return instance; } public static void main(String[] agrs) { new Thread(new SingletonTestRunnable()).start(); new Thread(new SingletonTestRunnable()).start(); } }
多线程Singleton反模式——使用synchronized修饰方法
public static synchronized Singleton getInstance() { .... }
添加synchronized关键字确实可以解决多线程安全问题,但是仍然认为是反模式。原因是执行效率低,getInstance()方法只允许一个线程进入,阻塞会增加程序运行时间。
★多线程Singleton最佳实践——eager模式
class SingletonTestRunnable implements Runnable { public void run() { Singleton.getInstance(); } } public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { System.out.println("create instance."); } public static Singleton getInstance() { return instance; } public static void main(String[] agrs) { new Thread(new SingletonTestRunnable()).start(); new Thread(new SingletonTestRunnable()).start(); } }
★多线程Singleton最佳实践——lazy模式
class SingletonTestRunnable implements Runnable { public void run() { Singleton.getInstance(); } } public class Singleton { private Singleton() { System.out.println("create instance."); } public static Singleton getInstance() { return Container.instance; } private static class Container { private static Singleton instance = new Singleton(); } public static void main(String[] agrs) { new Thread(new SingletonTestRunnable()).start(); new Thread(new SingletonTestRunnable()).start(); } }
--heipark
发表评论
-
shell下使用log4j 1.x “No appenders could be found for logger”问题两个处理办法
2018-05-25 23:25 1641错误: log4j:WARN No appenders c ... -
通过java class文件确定其编译器版本
2016-06-23 10:45 1074方法一: hexdump -C XXX.class ... -
字符编码笔记:ASCII,Unicode和UTF-8(转)
2014-11-06 17:29 1237今天中午,我突然想搞 ... -
Server sent unexpected return value (403 Forbidden) in response to OPTIONS
2014-10-10 15:01 5555之前用的好好的,忽然某天再次svn up时候就报下面的错误: ... -
netbeans下优秀sublinme主题
2014-09-29 10:13 3631推荐站点:http://netbeansthemes.com ... -
将netbeans项目放到jenkins上做持续集成
2014-07-25 15:20 1230netbeans项目本质是通过ANT来管理的,只不 ... -
关于jvm中Xmx参数默认值
2014-05-08 09:19 2015我的机器win7 64bit 8GB内存,通过jconso ... -
Eclipse代码自动完成功能无法使用问题记录
2014-04-28 10:15 1143使用Alt+/无法补齐Java代码,现象时没有反应。解决方 ... -
thrift0.9.1简单教程(包含Java服务端和Java、python客户端)
2014-04-25 15:55 6407一、Thrift Java服务端和客户端 官 ... -
使用sublime text3开发scala
2014-04-04 16:49 3771打开菜单栏Tool->build system-> ... -
netbeans下打开本地文件夹插件(explorer)
2014-04-02 14:44 20301. 在线安装 工具->插件->可用插 ... -
关闭Sublime自动更新
2014-03-09 21:42 839每次启动都提示更新,可以关闭它。 找到Prefere ... -
使用log4j.properties配置slf4j输出LOG
2014-01-09 08:57 6651完成配置需要以下文件: slf4j-log4j12-x ... -
正确使用java -cp通配符
2013-11-21 17:05 10186JDK6支持java -cp后面跟通配符'*',试了一下发 ... -
强制Java使用东八时区方法
2013-11-15 15:37 1835今天线上有台服务器时区错误,导致很多使用new Da ... -
谨慎使用java的PrintWriter类
2013-10-23 12:31 1363public void test() throws Fil ... -
记录Java ShutdownHook
2013-08-30 11:40 1073public class TestMe { stat ... -
eclipse + maven + jetty + spring web 开发环境简要笔记
2013-08-27 11:25 1609环境准备 确保安装maven3 确保安装eclip ... -
Eclipse(IDE for Java Developers)、maven、jetty、spring web集成
2013-08-27 08:53 0方法一: http://wiki.eclipse.o ... -
关于数据压缩
2013-08-23 14:26 1132常用压缩 quicklz zlib snappy/ ...
相关推荐
在多线程环境中,正确实现单例模式需要考虑线程安全,防止多个线程同时创建实例。通常使用双重检查锁定(Double-Checked Locking)或静态内部类等方式实现。 2. 工厂方法模式(Factory Method): Factory Method...
单例模式通过私有构造器和静态工厂方法来实现,同时使用`synchronized`关键字保证在多线程环境下的安全性。例如: ```java public class Singleton { private static Singleton instance; private Singleton() {...
4. **多执行线程模式(Multithreading Patterns)** 在Java中,多执行线程是并发编程的关键。这些模式包括线程池(Thread Pool)、守护线程(Daemon Thread)、锁(Locking Strategies)等。线程池可以有效地管理线程资源,...
│ 高并发编程第二阶段38讲、多线程Active Objects设计模式(接受异步消息的主动对象)-上.mp4 │ 高并发编程第二阶段39讲、多线程Active Objects设计模式(接受异步消息的主动对象)-中.mp4 │ 高并发编程第二阶段40...
多线程模式关注于在多线程环境下如何安全、高效地管理和协调多个线程。这类模式包括: - **Guarded Suspension(受保护的暂停模式)**:当一个线程调用另一个线程的同步方法时,如果该同步方法没有准备好,则该线程...
在多线程环境下,通过同步整个`getInstance()`方法来保证线程安全,但效率较低。 ```java public class Singleton { private static Singleton instance; private Singleton() {} public synchronized static ...
行为型模式则关乎对象间交互,例如策略模式(Strategy)允许在运行时选择算法,观察者模式(Observer)用于定义对象间的依赖关系,以及责任链模式(Chain of Responsibility)让多个对象有机会处理请求。 C#设计...
上述代码在多线程环境下可能会创建多个实例,因此需要改进。 2. **饿汉式**: 饿汉式单例在类加载时即完成初始化,保证了线程安全,但牺牲了延迟初始化的优点。例如: ```java public class Singleton { ...
实现单例模式时要注意线程安全问题,通常使用双检锁等技术来保证多线程环境下的正确性。 #### 七、适配器模式 (Adapter) **类图与描述:** 适配器模式允许不兼容的接口能够一起工作,通常用于让现有类能够与期望...
但是,如果不加同步控制,多线程环境下可能产生多个实例。 ```java public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance...
单例模式在多线程环境中尤其重要,因为它确保了对象的唯一性和资源的有效利用。 #### 结构型模式详解 - **适配器模式**:允许不兼容的接口之间能够协作。有两种形式:类适配器和对象适配器。类适配器通过多重继承...
这种方法被称为"懒汉式",在多线程环境下存在风险。因为当多个线程同时进入`if (instance == null)`条件时,可能会创建多个实例。代码如下: ```java public class Singleton1 { private Singleton1() {} ...
此外,在实际应用中,还要考虑序列化、多线程环境、测试等因素对单例模式的影响。 在设计系统时,合理运用单例模式可以提高代码的可读性和可维护性。但是,过度使用单例也可能导致设计过于复杂,使得系统难以测试和...
Java支持多线程编程,允许开发者创建多个线程并发执行任务。Java中有两种类型的线程:用户线程和守护线程。用户线程是开发者创建的线程,守护线程是JVM创建的线程。 六、Java网络编程 Java提供了多种网络编程的API...
- 需要注意线程安全问题,在多线程环境中可能会出现问题。 - **应用场景**: - 当希望在整个系统中,某个类只能出现一个实例时。 - 当对象创建的过程非常耗时或者耗资源时。 #### Factory Method(工厂方法)...
良葛格的《Design Pattern学习笔记》不仅涵盖了经典的GOF设计模式,还额外介绍了几种多线程模式,这使得这份学习笔记成为了一个宝贵的学习资源。下面将对其中的部分设计模式进行详细介绍。 #### 二、GOF设计模式 ...
由于描述中提到“主要包括了自己编程平时的收集随笔”,可以推测这份笔记覆盖了多个编程领域和技术细节。 ### 2. Java线程组(ThreadGroup)的使用 #### 2.1 ThreadGroup简介 - **定义**:`ThreadGroup`是Java中用于...
### Java学习笔记——设计模式与基础概念解析 #### 一、设计模式概述 设计模式是在软件开发过程中,针对常见的问题提出的经过验证的解决方案。这些模式是开发者们在长期实践中不断提炼和完善的结果,能够帮助...
【Singleton 单例模式】 单例模式是一种设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中特别有用,因为它可以节省系统资源,避免对系统内存的过度消耗。在Java...