`
joeblow
  • 浏览: 177824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

List非线程安全的代码示例

阅读更多
public class TreadSafeTest {
	//	Vector<Integer> data = new Vector<Integer>();
	//
	List<Integer> data = new ArrayList<Integer>(1);
	{
		data.add(99);
	}

	public static void main(String[] args) throws Exception {
		new TreadSafeTest().test();
	}

	public void test() throws Exception {
		new Thread() {
			int count = 10000;

			public void run() {
				try {
					while (count < 10009) {
						count++;
						System.out.println("1:" + data.get(0));
						data.set(0, count);
						System.out.println("1:" + data.get(0));
					}
				} catch (Exception e) {
					System.out.println(e);
				}
			};
		}.start();
		new Thread() {
			int count = 20000;

			public void run() {
				try {
					while (count < 20009) {
						count++;
						System.out.println("2:" + data.get(0));
						data.set(0, count);
						System.out.println("2:" + data.get(0));
					}
				} catch (Exception e) {
				}
			};
		}.start();
	}

}
分享到:
评论

相关推荐

    C++线程安全队列_示例代码.zip

    【C++ 语言】线程安全队列 ( 条件变量 | 线程调度 ) : https://hanshuliang.blog.csdn.net/article/details/102851323 下载完项目后 , 使用 Visual Studio 打开 , 注意需要配置 POSIX 线程库 ( 参考以下博客配置...

    Java多线程安全集合

    这些是基于非线程安全的集合(如ArrayList、HashMap)通过`Collections.synchronized*`方法转换得到的。例如,`Collections.synchronizedList`和`Collections.synchronizedMap`。同步集合在每个方法上加锁,确保...

    简单的多线程示例delphi7

    5. **线程间通信**:如果需要在线程间传递数据,可以使用`TThread.List`或自定义事件。例如,通过`TThread.Queue`方法在主线程和工作线程之间发送消息: ```delphi TThread.Queue(Self, procedure begin // 在...

    Java开发中的线程安全选择与Swing

    如果在非EDT线程中直接操作Swing组件,则可能导致应用程序崩溃或行为异常。 #### 解决方案:SwingUtilities.invokeLater() 和 invokeAndWait() 为了确保Swing组件的操作是在EDT中执行,Swing提供了`SwingUtilities...

    c# 委托访问listbox多线程操作

    - **使用场景**:当需要从非 UI 线程更新 UI 元素时,必须使用 Invoke 或 BeginInvoke 方法。 #### 示例代码分析 **1. 定义委托:** ```csharp delegate void SendToParent(string txt); ``` - 这里定义了一...

    详解Java多线程处理List数据

    下面是一个使用Java多线程处理List数据的示例代码: ``` public class Test_4 { public synchronized void handleList(List&lt;String&gt; data, int threadNum) { int length = data.size(); int tl = length % ...

    C#-多线程排序示例

    例如,`王老师5月30日-多线程排序-示例`这个文件可能包含了具体的代码实现,演示了如何将上述步骤应用到实际的C#项目中。初学者可以通过阅读和分析这个示例,理解多线程排序的工作原理。 在实际开发中,除了手动...

    多线程及list使用.zip

    后者可能是关于List的示例代码或者练习项目,通过实际操作,读者可以更好地掌握List的使用技巧。 学习多线程和List,需要理解线程生命周期、线程同步机制如锁(Lock)、 Monitor,以及线程安全的数据结构。对于List...

    C++双向链表类及四种多线程安全读写测试用例

    在C++编程中,数据结构和并发控制是两个重要的领域,本示例聚焦于"双向链表"这一数据结构以及"多线程"环境下的"安全读写"操作。双向链表是一种允许在序列中向前和向后遍历元素的数据结构,而多线程则涉及在多个执行...

    定时任务启动多线线程示例

    本示例将深入探讨如何在Spring框架中利用定时任务(Spring Task)启动多线程来执行并发操作。 首先,我们要了解Spring的定时任务,它基于`@Scheduled`注解实现。`@Scheduled`可以标记在方法上,表示该方法会按照...

    [线程技术]排序对象

    本示例代码提供了一个简单的线程安全的排序方法,适用于数组中的对象。我们来详细解析一下这段代码及其涉及的知识点。 首先,`SortObjects` 类是一个用于对对象数组进行排序的工具类。它没有实例化,所有的方法都是...

    多线程并行执行,汇总结果

    在提供的压缩包中,"code"可能是包含示例代码的文件。这些代码可能展示了如何使用`Thread`和`CountDownLatch`来实现多线程并行执行,并在所有线程完成后汇总结果。具体代码实现可能包括创建`Thread`对象、初始化`...

    C#实现多线程同步并发操作

    #### 代码示例解析 在给定的代码片段中,一个名为`ThreadDemo`的类展示了如何使用C#实现多线程同步并发操作。该类创建了两个线程`threadOne`和`threadTwo`,这两个线程共享一个`ArrayList`对象`stringList`,用于...

    C++Builder线程样例

    6. **异常处理**:考虑到硬件操作可能抛出异常,线程代码中应包含适当的错误处理和异常捕获机制,以确保程序的稳定性和健壮性。 7. **状态监控**:为了便于调试和性能优化,可能还需要添加日志记录或状态指示器,...

    qt导出、操作excel(多线程)

    在提供的`DatFileToExcel`压缩包文件中,可能包含了示例代码或数据文件,这些文件可以用于测试上述步骤,帮助你更好地理解和实现这个功能。 总之,通过Qt的QAxObject和多线程技术,我们可以高效且流畅地处理大量...

    C# UDP多线程发送接收

    提供的"UDPExercise"压缩包可能包含示例代码,用于演示如何实现上述理论。通过分析和运行这些代码,你可以更深入地理解多线程UDP通信的实现。 总结,C# UDP多线程通信是网络编程中的一个重要实践,它结合了UDP的...

    Nachos的线程管理模块升级

    2. 扩展线程状态:在`system.h`中声明`hook_list`,并在`thread.cc`中实现`Thread::suspend()`和`Thread::active(int thread_id)`,以及在`list.cc`中声明`List::Remove_At(int num)`和`List::visit(int num)`方法。...

    C#多线程执行

    C#提供了一些同步机制,如Mutex、Semaphore、Monitor和锁(lock关键字),来确保对共享资源的访问是线程安全的。例如,使用lock关键字可以防止数据竞争: ```csharp lock (someObject) { // 访问共享资源的代码 } ...

    在列表控件中采用多线程技术插入进度条

    对于列表控件(ListCtrl),我们可以通过InsertItem()方法插入新的项目,同样需要注意线程安全。在多线程环境下,可能需要在主线程中插入列表项,以避免UI操作与工作线程冲突。 最后,为了实现自定义的线程数量,可以...

    JAVA模拟多线程给多用户发送短信

    核心逻辑出现在splitList()方法中,该方法根据每个线程需要处理的用户数(示例中为2个用户),将用户列表分割成若干个子列表。每个子列表就是一个线程需要处理的用户数据。splitList()方法通过计算页数和页码的方式...

Global site tag (gtag.js) - Google Analytics