`
hbkh2000
  • 浏览: 203726 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

线程代码02

阅读更多

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多线程代码"可能包含对以上概念的具体实现,通过阅读和学习这些代码,开发者可以更好地理解和掌握MFC多线程编程技巧。压缩包中的"code"文件很可能是这样的实现,包括线程创建、同步、通信和管理的...

    多线程代码实例

    本文将详细解析"多线程代码实例",主要关注在Linux环境中,使用C语言实现的生产消费管理系统,以及如何利用POSIX线程库(pthread)中的互斥量和条件变量来管理共享资源。 首先,我们了解多线程的基本概念。多线程是...

    简单的java线程代码

    简单的java线程代码 对Thread中的sleep方法进行测试

    C#多线程代码实例详解

    在提供的"ThreadTest"文件中,很可能是包含了一个或多个人关于C#多线程和Mutex使用的示例代码。这些示例可能涵盖了创建线程、使用Mutex进行同步以及处理线程间的通信等实际应用场景。通过学习这些例子,你可以更好地...

    C#多线程代码下载

    这个“多线程程序”示例将涵盖以上部分或全部知识点,通过分析和运行代码,你可以更直观地学习和理解多线程编程在C#中的应用。在实际开发中,合理使用多线程技术可以优化程序性能,提高用户体验。

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

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。本文将深入探讨Java多线程中...通过阅读和分析提供的`java多线程的案例源代码`,可以更直观地了解这些概念在实际中的应用。

    VB的多线程代码

    **VB的多线程代码详解** 在编程领域,多线程是提高程序执行效率和响应能力的重要技术。Visual Basic(VB)虽然以其易学易用著称,但在处理复杂的并发任务时,同样支持多线程操作。本篇将深入探讨VB中的多线程实现,...

    简单的线程代码编写,初学入门,

    本文将深入探讨“简单的线程代码编写”,帮助初学者理解线程的基本概念和如何在代码中实现。 线程是操作系统分配CPU时间片的基本单元,一个进程可以包含多个线程。它们共享同一块内存空间,但各自拥有独立的运行栈...

    多线程测试代码多线程测试代码

    开发者可以通过VS IDE创建项目,编写多线程代码,并利用其强大的调试工具来分析和调试线程行为。在`mthread`这个压缩包中,可能包含了使用上述技术编写的测试代码示例,你可以通过查看和运行这些代码来更好地理解和...

    Java多线程实例代码

    Java中的`synchronized`用于控制并发访问,确保同一时间只有一个线程能执行特定代码块,避免数据不一致。可以修饰方法或代码块: - 修饰方法:整个方法都将是同步的。 - 修饰代码块:指定需要同步的资源,如共享...

    线程源代码线程源代码

    在给出的源代码中,`CWorkerThread` 类是实现了线程管理功能的一个类模板。以下是基于这个源代码的线程相关知识点的详细说明: 1. **线程创建**:在`CWorkerThread`构造函数中,使用`CreateThread`函数创建了一个新...

    C++多线程经典代码

    非常经典的多线程经典代码,非常有用的哦。

    几种方法编写线程代码

    总的来说,编写线程代码需要深入理解多线程的概念,掌握各种创建和管理线程的方法,并确保线程安全和高效性。在实际项目中,结合使用`ExecutorService`和线程池通常是最佳实践,因为它们提供了更好的性能和资源管理...

    c语言跨平台线程代码封装

    在Windows上是使用系统win32 api创建和管理线程,Linux和Mac通常使用pthread,尽管Windows也可以使用第三方的pthread库,但这样库的依赖会比较多,项目的部署会麻烦些,最佳的方法应该还是写跨平台代码,通过宏区分...

    Win32多线程程序设计全部代码

    本资源“Win32多线程程序设计全部代码”提供了完整的源代码示例,帮助开发者深入理解和实践如何在Win32环境下创建和管理多线程应用程序。 一、Win32 API与多线程 Win32 API是Microsoft Windows操作系统的核心接口,...

    JAVA线程学习(源代码)

    本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...

    用户界面线程 源代码

    此外,理解线程间的同步原语,如临界区、互斥量、事件和信号量,可以帮助编写更高效、更安全的多线程代码。在Windows环境下,`EnterCriticalSection`和`LeaveCriticalSection`可以用于保护共享资源,`...

    多线程实现源代码(简单)

    标题中的“多线程实现源代码(简单)”表明这是一个关于如何创建和理解多线程程序的实例。通过这个简单的源代码,我们可以学习到多线程的基本概念、工作原理以及如何在实际应用中运用。 1. **多线程的概念**:在...

    Qt多线程测试代码

    标题"Qt多线程测试代码"暗示了我们将探讨如何在Qt中使用多线程来执行耗时任务,以避免阻塞主线程导致用户界面(UI)无响应。在实际的软件开发中,这通常是提高用户体验的关键策略之一。 描述中提到,"Qt多线程多用于...

    线程练习代码下载即测

    提供的"线程测试练习代码"可能包含了上述知识点的实践案例,如简单的线程启动、线程同步示例,或者是线程通信的模拟。通过运行和分析这些代码,你可以加深对线程理解,提高处理并发问题的能力。记住,理论知识结合...

Global site tag (gtag.js) - Google Analytics