import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Set;
public class MemberMain implements Runnable {
// 作为缓冲区存放对象
private Set setMember = new HashSet();
// private Boolean isWriter = true;
// private Integer []i = new Integer[3];//{1,2,3,4,5,6,7,8,9};
// i = {1,2,3,4,5,6,7,8,9};
private int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
private static ArrayList list = new ArrayList();
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// m.operateXml();
MemberMain m = new MemberMain();
// Product p = new Product();
// Custom c = new Custom();
// // 运行写线程;0-9写到一个容器中,最多放5个;
// new Thread(p).start();
// // 运行读线程;a/b依次取出数据;
// new Thread(c).start();
// 同一个对象的不同线程;
new Thread(m, "writeThread").start();
new Thread(m, "readThread").start();
}
public int[] getArr() {
return arr;
}
public synchronized void run() {
String thName = Thread.currentThread().getName();
System.out.println("thName =" + thName);
if (thName.equals("writeThread")) {
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);
if (list.size() > 4) {
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
if (list.size() > 0) {
System.out.println("list1 =" + list);
notify();
}
} else {
if (null != list && list.size() > 0) {
Iterator iter = list.iterator();
while (iter.hasNext()) {
int i = (Integer) iter.next();
System.out.println("i =" + i);
iter.remove();
}
System.out.println("list2 =" + list);
if (list.size() == 0) {
notify();
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
分享到:
相关推荐
在实际项目中,"MFC多线程代码"可能包含对以上概念的具体实现,通过阅读和学习这些代码,开发者可以更好地理解和掌握MFC多线程编程技巧。压缩包中的"code"文件很可能是这样的实现,包括线程创建、同步、通信和管理的...
本文将详细解析"多线程代码实例",主要关注在Linux环境中,使用C语言实现的生产消费管理系统,以及如何利用POSIX线程库(pthread)中的互斥量和条件变量来管理共享资源。 首先,我们了解多线程的基本概念。多线程是...
简单的java线程代码 对Thread中的sleep方法进行测试
在提供的"ThreadTest"文件中,很可能是包含了一个或多个人关于C#多线程和Mutex使用的示例代码。这些示例可能涵盖了创建线程、使用Mutex进行同步以及处理线程间的通信等实际应用场景。通过学习这些例子,你可以更好地...
这个“多线程程序”示例将涵盖以上部分或全部知识点,通过分析和运行代码,你可以更直观地学习和理解多线程编程在C#中的应用。在实际开发中,合理使用多线程技术可以优化程序性能,提高用户体验。
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。本文将深入探讨Java多线程中...通过阅读和分析提供的`java多线程的案例源代码`,可以更直观地了解这些概念在实际中的应用。
**VB的多线程代码详解** 在编程领域,多线程是提高程序执行效率和响应能力的重要技术。Visual Basic(VB)虽然以其易学易用著称,但在处理复杂的并发任务时,同样支持多线程操作。本篇将深入探讨VB中的多线程实现,...
本文将深入探讨“简单的线程代码编写”,帮助初学者理解线程的基本概念和如何在代码中实现。 线程是操作系统分配CPU时间片的基本单元,一个进程可以包含多个线程。它们共享同一块内存空间,但各自拥有独立的运行栈...
开发者可以通过VS IDE创建项目,编写多线程代码,并利用其强大的调试工具来分析和调试线程行为。在`mthread`这个压缩包中,可能包含了使用上述技术编写的测试代码示例,你可以通过查看和运行这些代码来更好地理解和...
Java中的`synchronized`用于控制并发访问,确保同一时间只有一个线程能执行特定代码块,避免数据不一致。可以修饰方法或代码块: - 修饰方法:整个方法都将是同步的。 - 修饰代码块:指定需要同步的资源,如共享...
在给出的源代码中,`CWorkerThread` 类是实现了线程管理功能的一个类模板。以下是基于这个源代码的线程相关知识点的详细说明: 1. **线程创建**:在`CWorkerThread`构造函数中,使用`CreateThread`函数创建了一个新...
非常经典的多线程经典代码,非常有用的哦。
总的来说,编写线程代码需要深入理解多线程的概念,掌握各种创建和管理线程的方法,并确保线程安全和高效性。在实际项目中,结合使用`ExecutorService`和线程池通常是最佳实践,因为它们提供了更好的性能和资源管理...
在Windows上是使用系统win32 api创建和管理线程,Linux和Mac通常使用pthread,尽管Windows也可以使用第三方的pthread库,但这样库的依赖会比较多,项目的部署会麻烦些,最佳的方法应该还是写跨平台代码,通过宏区分...
本资源“Win32多线程程序设计全部代码”提供了完整的源代码示例,帮助开发者深入理解和实践如何在Win32环境下创建和管理多线程应用程序。 一、Win32 API与多线程 Win32 API是Microsoft Windows操作系统的核心接口,...
本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...
此外,理解线程间的同步原语,如临界区、互斥量、事件和信号量,可以帮助编写更高效、更安全的多线程代码。在Windows环境下,`EnterCriticalSection`和`LeaveCriticalSection`可以用于保护共享资源,`...
标题中的“多线程实现源代码(简单)”表明这是一个关于如何创建和理解多线程程序的实例。通过这个简单的源代码,我们可以学习到多线程的基本概念、工作原理以及如何在实际应用中运用。 1. **多线程的概念**:在...
标题"Qt多线程测试代码"暗示了我们将探讨如何在Qt中使用多线程来执行耗时任务,以避免阻塞主线程导致用户界面(UI)无响应。在实际的软件开发中,这通常是提高用户体验的关键策略之一。 描述中提到,"Qt多线程多用于...
提供的"线程测试练习代码"可能包含了上述知识点的实践案例,如简单的线程启动、线程同步示例,或者是线程通信的模拟。通过运行和分析这些代码,你可以加深对线程理解,提高处理并发问题的能力。记住,理论知识结合...