`
hvang1988
  • 浏览: 51255 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

java 多个线程处理一个对象集合

阅读更多
好消息,百度网盘专业搜索网站上线了
打开瞧一瞧:http://bitar.cn
package com.thread;

import java.sql.SQLException;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class MutiThreadExecutor {

	/**
	 * @param args
	 * @throws SQLException
	 */
	public static void main(String[] args) throws SQLException {
		
		MyT t =new MyT();
		t.start(10);
		for (int i = 0; i < 100; i++) {
			t.triggerEvent(""+i);
		}
	}

}

/**
 * 多个线程处理一个对象集合(ConcurrentLinkedQueue),没有返回结果
 * @author Administrator
 *
 */
class MyT implements Runnable{
	private static Object lock =new Object();
	
	public static ExecutorService exec=null;
	boolean running;
	ConcurrentLinkedQueue<String>  eventQueue = new ConcurrentLinkedQueue<String>();
	
	public void start(int threadCount){
		running=true;
		exec = Executors.newFixedThreadPool(threadCount);
		for (int i = 0; i <threadCount; i++) {
			exec.submit(this);
		}
	}
	public void stop(){
		running=false;
	}
    public void triggerEvent(String str) {
        synchronized (lock) {
            eventQueue.add(str);
            lock.notifyAll();
        }
    }
	
	@Override
	public void run() {
        while (running) {
            synchronized (lock) {
                if (eventQueue.isEmpty() && running) {
                    try {
                        lock.wait(1000 * 30 );//超时30秒
                    } catch (InterruptedException ie) {
                    }
                }

            }
            while (!eventQueue.isEmpty()) {
                String event = (String) eventQueue.poll();
               
                if (null != event) {
                    System.out.println(Thread.currentThread().getId()+":"+event);
                }
                
            }

        }
		
	}
	
	
}
分享到:
评论

相关推荐

    java多线程查询数据库

    综上所述,"java多线程查询数据库"是一个涉及多线程技术、线程池管理、并发控制、分页查询等多个方面的复杂问题。通过理解和掌握这些知识点,我们可以有效地提高数据库操作的效率和系统的响应速度。

    Java多线程安全集合

    这些集合确保了在多个线程访问时的数据一致性、完整性和安全性,避免了竞态条件、死锁和其他并发问题。Java提供了一系列的线程安全集合类,它们是专门为多线程环境设计的。 首先,我们要了解什么是线程安全。线程...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    JAVA集合、多线程

    集合是Java提供的一种数据结构,用于存储多个对象。Java集合框架包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。理解这些接口和类的特性和用法是Java开发者必备的基础...

    详解Java多线程处理List数据

    Java多线程处理List数据是指使用多个线程来处理List数据的操作。这种操作可以将List数据分配给多个线程,每个线程处理一部分数据,从而提高程序的执行效率。 二、为什么需要Java多线程处理List数据? 在处理大规模...

    Java集合多线程安全.docx

    线程安全指的是一个对象在多线程环境下可以被正确地访问和修改,而不会出现竞态条件或死锁等问题。 线程不安全的集合类包括: 1. `ArrayList`:它的添加、删除和修改操作不是线程安全的。例如,在多个线程同时尝试...

    java集合类线程安全.doc

    Java 集合类线程安全 Java 集合框架是由 Java 平台标准版 1.2 引入的通用数据结构与算法框架。其灵活的面对对象设计受到了广大 Java 程序员的一致青睐,为 Java 平台的成熟奠定了坚实的基础。 线程安全不是一个...

    java多线程设计

    这使得多个线程可以共享一个不可变对象,无需担心数据一致性问题,从而提高了程序的并发性能。 三、Java多线程防止非安全问题的策略 1. 使用不可变对象:如String、BigInteger、BigDecimal等都是不可变对象,可以...

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

    在本文中,我们将深入了解如何使用JAVA来模拟多线程...对于需要学习JAVA并发编程和网络编程的开发者来说,本文提供了一个很好的实例来加深理解,并且可以以此为基础进一步深入学习JAVA在实际应用中的多线程处理机制。

    精通java多线程

    Java多线程是Java编程语言中的一个重要特性,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多核处理器的普及使得多线程技术成为提升性能的关键手段。本篇将深入探讨Java多线程...

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

    `CountDownLatch`是Java并发包(java.util.concurrent)中的一个计数器类,它允许一个或多个线程等待其他线程完成操作。在初始化时,`CountDownLatch`需要一个非负整数作为计数器的初始值。每次调用`countDown()`...

    Java多线程编程核心技术_完整版_java_

    1. java.util.concurrent包下的工具类,如CountDownLatch、CyclicBarrier、Semaphore等,用于协调多个线程之间的操作。 以上内容只是《Java多线程编程核心技术》教程中的一部分核心知识点,实际学习中还需要结合...

    Java多线程练习题

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,多线程的实现主要通过两种方式:继承Thread类和实现Runnable接口。理解并掌握多线程的使用对于任何Java开发者...

    JAVA-多线程 所有文件

    1. **线程的概念**:线程是操作系统分配CPU时间的基本单位,一个进程中可以有多个线程并发执行。Java提供了一个内置的多线程模型,使得开发者可以在一个程序中同时运行多个任务。 2. **创建线程**:在Java中,有两...

    Java多线程下载网络图片

    1. **同步与互斥**:当多个线程同时访问同一资源(如共享的图片存储位置)时,可能会引发数据不一致的问题。Java提供了多种同步机制,如`synchronized`关键字、`Lock`接口以及`ReentrantLock`等,确保在同一时刻只有...

    java经典多线程面试题

    - CountDownLatch是一个同步辅助类,它允许一个或多个线程等待直到在其他线程中执行的一组操作完成。 这些面试题涵盖了Java多线程编程的基础知识、同步机制、线程间通信以及并发集合类等多个方面。在准备面试时,...

    java 核心知识 包含 JVM 线程 集合 数据库 算法 负载等一系列

    本文将深入探讨Java的核心知识,包括JVM(Java虚拟机)、线程、集合、数据库、算法以及负载均衡等多个方面。 首先,让我们从Java虚拟机(JVM)开始。JVM是Java程序运行的基石,它负责解析字节码并执行。理解JVM的...

    JAVA多线程编程技术PDF

    总结起来,“JAVA多线程编程技术PDF”涵盖了多线程的基本概念、同步机制、线程通信、死锁避免、线程池以及线程安全的集合类等内容。通过深入学习这份资料,开发者可以全面掌握Java多线程编程技术,提升程序的并发...

    JAVA多线程学习内容

    此外,还可以使用volatile关键字来确保多个线程对共享变量的可见性,防止数据不一致。java.util.concurrent包中提供了高级并发工具,如Semaphore(信号量)、CyclicBarrier(循环屏障)、CountDownLatch(倒计时器)...

    Java多线程程序设计

    2. volatile关键字:标记一个变量,使得多个线程能立即看到其他线程对它的修改,保证可见性。 3. Lock接口与ReentrantLock类:提供比synchronized更细粒度的锁控制,如公平锁、非公平锁、读写锁等,以及tryLock()...

Global site tag (gtag.js) - Google Analytics