`
wx1568905209
  • 浏览: 25161 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

线程(四)

 
阅读更多

一、单例模式

1、双重检查

public class SingletonClass {

    private void SingletonClass(){}

    private static SingletonClass singletonClass = null;

    public static SingletonClass getInstance() {
        if (singletonClass == null) {
//            try {
//                Thread.sleep(1000 * 2);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
            synchronized (SingletonClass.class) {
                if (singletonClass == null) {
                    return singletonClass = new SingletonClass();
                }
            }
        }
        return singletonClass;
    }

    public static void main(String[] args) {
        new Thread(new Runnable() {
            public void run() {
                System.out.println(SingletonClass.getInstance().hashCode());
            }
        }).start();

        new Thread(new Runnable() {
            public void run() {
                System.out.println(SingletonClass.getInstance().hashCode());
            }
        }).start();

        new Thread(new Runnable() {
            public void run() {
                System.out.println(SingletonClass.getInstance().hashCode());
            }
        }).start();
    }
}

双重if判断

 

转载于:https://my.oschina.net/u/2504766/blog/758517

分享到:
评论

相关推荐

    linux线程四个常用函数源码例子

    为了更好地理解和实践这些函数,你可以打开提供的"linux线程四个常用函数源码例子"压缩包,查看和运行其中的示例代码,这将加深你对Linux线程编程的理解。记得在实际操作时,遵循良好的编程习惯,包括适当的错误检查...

    线程四笔记,对于正在学习Java的朋友可以参考一下

    【线程基础与Java线程】 Java线程是并发编程的核心,它允许程序同时执行多个任务,提升系统效率。在Java中,有两种主要的创建线程的方式:实现Runnable接口和继承Thread类。 1. **实现Runnable接口**: - 创建一...

    线程编程 四个线程...

    在给定的代码中,我们可以看到四个线程 t1、t2、t3 和 t4。每个线程都实现了 Runnable 接口,并 override 了 run 方法。在 run 方法中,每个线程都会不断地执行一系列操作,包括增加或减少变量 i 的值,并输出当前...

    四个线程写四个文件abcd

    四个线程,线程A只能写a,线程B只能写b,线程C只能写c,线程D只能写d,四个文件a.bin b.bin c.bin d.bin内容要求分别是:abcdabcd...;bcdabcda...;cdabcdab...;dabcdabc....; 如何实现四个线程写上面四个文件?

    java多线程实例

    3. Executors工厂方法:提供固定大小、可缓存、定长和单线程四种线程池的快速创建方式。 五、线程优先级 1. Java线程有10个优先级,从MIN_PRIORITY(1)到MAX_PRIORITY(10),默认优先级是NORM_PRIORITY(5)。...

    C#多线程编程 四个显示线程计算结果的函数

    在标题提到的"四个显示线程计算结果的函数"中,这通常指的是在多线程环境下,如何在主线程(通常是UI线程)中安全地更新界面以展示从属线程计算的结果。 在描述中,提到的问题是关于从属线程如何在主界面上显示中间...

    MFC多线程 工作者线程 用户界面线程

    四、线程间通信 在MFC中,线程间通信可以通过几种方式实现: 1. 消息队列:使用PostThreadMessage函数向其他线程发送消息。 2. 事件对象:利用CEvent类创建事件,等待或通知其他线程。 3. 互斥量:通过CMutex类实现...

    IBM多线程编程基础教程

    3. **共享数据访问**(IBM多线程四-共享对数据的访问.doc): - 线程安全问题:当多个线程访问同一份数据时可能出现的数据不一致性和竞态条件。 - 同步机制:`synchronized`关键字用于保证线程间的互斥访问,防止...

    MFC多线程的创建,包括工作线程和用户界面线程

    #### 四、多线程与定时器的关系 ##### 4.1 定时器的作用 定时器是一种特殊的系统资源,它可以定期向线程发送特定的消息。在MFC中,定时器通常用于周期性地执行某些任务或刷新用户界面,例如: - **启动定时器**:...

    C#跨线程调用控件的四种方式

    以下就是C#中非控件创建线程调用控件的四种主要方式: 1. **Control.Invoke() 和 Control.BeginInvoke()** 这是最常见的处理跨线程操作的方法。`Invoke`方法会同步地执行委托,直到完成才会返回,而`BeginInvoke`...

    .Net下多线程的四种编程实现方式详解

    详细讲解了多线程的四种实现方式(Thread、线程池、Task、委托),以及各种实现方式的优缺点。相信对于想学习多线程的朋友是个不错的选择。

    线程同步的四种方式

    以下是对线程同步的四种主要方式的详细解释: 1. **事件(Event)** 事件是Windows API提供的一种线程同步机制,它允许一个线程通知其他线程某个特定事件已经发生。事件对象有两种状态:有信号(Signaled)和无...

    C#跨线程调用控件的四种方式(调用实例源码)

    下面我们将详细介绍C#中实现跨线程调用控件的四种常见方法,并提供相应的调用实例源码。 1. **控件的Invoke方法** 这是最常用且最直接的方法。`Control.Invoke`方法用于在控件所在的线程上执行指定的委托。如果...

    测试一-四线程实验报告.doc

    标题中的“测试一-四线程实验报告.doc”是一个关于多线程编程和消息队列交互的实践项目,描述中详细介绍了实验的目的和实现方式。这个实验的核心是使用四个线程(A、B、C、D)和一个消息队列来实现线程间的数据通信...

    Java多线程四种实现模板

    在Java中,实现多线程主要有四种方法,这些模板适用于不同场景,开发者可以根据需求选择合适的方式。以下是对这四种模板的详细说明: 1. **使用匿名内部类的方式** 这种方式是最常见也是最简洁的实现多线程的方法...

    C#WinForm跨线程更新UI的四种方法

    以上四种方法都可以有效地解决WinForms应用中跨线程更新UI的问题,选择哪种方法主要取决于具体需求,如是否需要等待后台操作完成、是否希望简化编程模型等。在实际开发中,通常推荐使用BackgroundWorker,因为它提供...

    C#中的线程(四)高级话题

    在C#编程中,线程是并发执行代码的基本单元,对于多核处理器系统或需要同时处理多个任务的应用程序至关重要。本篇文章将深入探讨线程的高级话题,包括非阻止同步、Wait和Pulse机制、以及如何安全地Suspend和Resume...

    易语言线程返回数据的方法

    四、线程返回数据的方法 1. **使用全局变量**:线程执行完毕后,可以修改全局变量,然后由主线程或其他线程读取。这种方式简单,但不适用于复杂的同步需求。 2. **事件机制**:线程执行完后,可以通过触发一个事件...

    java多线程代码案例(创建线程,主线程,线程优先级,线程组,线程同步,线程间的通信)

    避免死锁的关键是遵循死锁的四个必要条件:互斥、请求与保持、不剥夺和环路等待。合理设计资源获取顺序和使用`Lock`的超时、tryLock等功能可以预防死锁。 这些知识点都是Java多线程编程的基础,理解并熟练运用它们...

Global site tag (gtag.js) - Google Analytics