`

线程安全与不安全的实例

    博客分类:
  • java
 
阅读更多
package com.xiancheng;

import java.util.ArrayList;
import java.util.Vector;

public class synchronizedCollectionTest {

    static ArrayList al = new ArrayList(20);
    static Vector vt = new Vector();

    public static void main(String[] args) throws Exception {

        Thread thread1 = new Thread() {

            public void run() {
                for (int i = 0; i < 10; i++) {
                    al.add(al.size(),new Integer(i));
                    vt.add(vt.size(),new Integer(i));
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        Thread thread2 = new Thread() {

            public void run() {
                for (int i = 0; i < 10; i++) {
                    al.add(al.size(),new Integer(i));
                    vt.add(vt.size(),new Integer(i));
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        thread1.start();
        thread2.start();
        thread1.join();
        thread2.join();
        System.out.println(al);
        System.out.println(vt);
    }

}


输出结果:

[0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
分享到:
评论

相关推荐

    CVI 线程锁、线程安全变量实例

    本实例将深入探讨如何在LabWindows/CVI中有效地使用线程锁和线程安全变量来实现多线程程序设计。 首先,我们来看线程锁。线程锁,也称为互斥锁,是一种同步机制,用于确保同一时间只有一个线程可以访问特定的资源或...

    servlet线程安全问题

    Servlet 线程安全问题是指在使用 Servlet 编程时,如果不注意多线程安全性问题,可能会导致难以发现的错误。Servlet/JSP 技术由于其多线程运行而具有很高的执行效率,但这也意味着需要非常细致地考虑多线程的安全性...

    多线程安全退出实例源代码

    在编程领域,尤其是在Java或C++等支持多线程的编程语言中,多线程安全退出是一个关键概念。多线程允许程序同时执行多个任务,提高系统效率,但同时也引入了线程同步和资源管理的问题。这个实例源代码,...

    C# 多线程实例多线程实例多线程实例

    使用`volatile`关键字、`Interlocked`类或其他同步机制可以帮助实现线程安全。 8. Task并行库(TPL): .NET Framework 4.0引入了Task Parallel Library,提供了一种更高级的方式来并行执行任务。`Task`类提供了更...

    servlet与Struts action线程安全问题分析

    1. **避免使用实例变量**:尽可能使用局部变量,局部变量只存在于方法的执行上下文中,不会被多个线程共享,因此不存在线程安全问题。 2. **使用同步控制**:通过`synchronized`关键字对关键代码块或方法进行同步,...

    .NET多线程实例

    为了在UI线程安全地更新这些控件,需要使用BeginUpdate和EndUpdate方法来减少重绘次数,或者利用后台线程来更新数据源,然后在UI线程上刷新控件。 "分割窗体"的多线程应用可能涉及对窗体部件的独立操作。在多线程...

    java线程安全测试

    在Java中,线程安全问题通常与并发、内存模型和可见性有关。Java内存模型(JMM)定义了如何在多线程环境下共享数据的规则,确保线程之间的正确交互。 线程安全可以分为三种类型: 1. 不安全:当多个线程访问共享...

    C#多线程编程实例 线程与窗体交互源码

    标题中的"C#多线程编程实例 线程与窗体交互源码"意味着这个示例将展示如何在线程安全的环境下操作UI组件。在C#中,我们通常使用`Control.Invoke`或`Control.BeginInvoke`方法来解决这个问题。这些方法会在正确的线程...

    线程安全你还在用synchronized?

    ### 线程安全与ThreadLocal的深入剖析 #### 一、引言 在多线程编程中,确保数据的一致性和线程安全性是至关重要的。传统的锁机制,如`synchronized`关键字,虽然能有效避免多线程环境下的数据竞争问题,但其使用...

    浅议单例模式之线程安全(转)

    在多线程环境下,线程安全的单例模式尤为重要,因为如果不正确实现,可能会导致多个线程同时创建多个实例,违反了单例模式的基本原则。 在Java中,单例模式通常有以下几种实现方式: 1. 饿汉式(静态常量): ...

    VB 多线程实例

    在VB(Visual Basic)编程环境中,多线程是一种高级编程技术,它允许应用程序同时执行多个...在实际开发中,应根据任务特性和性能需求选择合适的线程创建方式,并注意线程安全和同步问题,以确保程序的正确性和可靠性。

    java线程安全总结.doc

    1. **单例模式**:确保一个类只有一个实例,通常需要考虑线程安全的单例实现,如双重检查锁定。 2. **生产者消费者模式**:通过队列来协调生产者和消费者的执行,避免直接的资源竞争。 3. **读写锁**:允许多个线程...

    delphi线程简单实例

    注意,线程安全和同步是多线程编程中必须考虑的问题。在访问共享资源或界面组件时,应使用如`Synchronize`或`Queue`方法确保在主线程中执行,避免数据竞争和界面更新问题。 总结来说,通过这个简单的Delphi线程实例...

    C#单线程与多线程实例

    4. **复杂性**:多线程编程比单线程更复杂,需要考虑线程安全、资源竞争和线程间通信等问题。 5. **响应速度**:多线程可以提高用户界面的响应速度,比如在后台执行耗时任务时,主线程仍能处理用户的输入。 四、VS...

    Delphi 多线程实例

    在实际应用中,你还需要考虑线程安全、资源管理以及如何正确处理异常。确保线程在完成任务后能够正确地清理资源,防止内存泄漏。此外,当线程与界面交互时,应避免阻塞主线程,以免影响用户体验。 总结,Delphi 的 ...

    线程安全测试类

    3. **死锁与竞态条件**:在进行线程安全测试时,还需要考虑潜在的死锁和竞态条件。死锁是两个或更多线程相互等待对方释放资源而无法继续执行的情况。竞态条件则发生在多个线程同时修改共享变量时,可能导致结果的不...

    简单多线程实例简单多线程实例简单多线程实例

    - **线程安全**:当多个线程访问同一资源时,不会导致数据不一致或错误的行为。为实现线程安全,可以使用`synchronized`关键字、`Lock`接口或者原子变量(如`AtomicInteger`)。 - **死锁**:两个或多个线程相互...

    simpleDateFormat是线程不安全的

    在Java编程语言中,`SimpleDateFormat`类是一个广泛使用的日期时间格式化工具,但它的线程安全性是一个常常被开发者忽视的问题。标题指出的"simpleDateFormat是线程不安全的",意味着在多线程环境下,如果多个线程...

    多线程实例,线程实例

    - 线程安全:由于共享内存空间,多个线程可能同时访问同一资源,需防止竞态条件和死锁。 - 资源分配:线程过多可能导致资源浪费,需要合理调度。 - 线程间通信:线程间通信复杂,可能需要使用信号量、互斥锁等...

    java 多线程并发实例

    Java的BlockingQueue接口(如ArrayBlockingQueue)非常适合实现这一模型,它提供了线程安全的数据插入和移除操作。 在实例中提到的"全部开始 全部停止 单个停止"可能涉及到线程的启动和控制,这可以通过控制线程的...

Global site tag (gtag.js) - Google Analytics