`

一个同步队列例子

    博客分类:
  • Java
阅读更多
这个用的也比较少, 做一个参考, 原文见这里

private BlockingQueue workQueue = new LinkedBlockingQueue();
private Map commandQueueMap = new ConcurrentHashMap(); 
 
public SynchronousQueue addCommand(Command command) {
    SynchronousQueue queue = new SynchronousQueue();
    commandQueueMap.put(command, queue);
    workQueue.offer(command);
    return queue;
}
 
public Object call() throws Exception {
    try {
        Command command = workQueue.take();
        Result result = command.execute();
        SynchronousQueue queue = commandQueueMap.get(command);
        queue.offer(result);
        return null;
    } catch (InterruptedException e) {
        throw new WorkException(e);
    }
}


Command command;
SynchronousQueue queue = commandRunner.addCommand(command);
Result result = queue.poll(2, TimeUnit.MINUTES);
if (result == null) {
	throw new CommandTooLongException(command);
} else {
	return result;
}

分享到:
评论
1 楼 qq123zhz 2012-04-06  
我用的是arrayBlockQueue。。。

相关推荐

    c# queue 队列例子

    在描述的场景中,创建了一个队列并启动了一个监控线程。这个线程持续检查队列是否有新的消息。当有新消息入队时,线程会立即将其处理并发送出去。这种设计模式在处理异步事件或消息传递时非常常见,例如在网络编程、...

    队列加多线程的例子

    在这个例子中,"队列加多线程的例子"可能是一个使用Delphi编程语言设计的应用,它创建了一个动态队列来存储待处理的任务,然后利用多线程来并发执行这些任务。开发者可以动态地调整任务数量和线程数量,以适应不同的...

    生产消费者队列(c#),用于线程的队列自动同步

    在实际应用中,生产者通常会在一个单独的线程或任务中运行,不断地向队列中添加任务,而消费者则在一个或多个独立的线程中运行,从队列中取出并执行任务。这样,当生产者产生的任务过多时,消费者可以及时处理,避免...

    一个内存地址空间同时运行两个程序的例子

    在"一个内存地址空间同时运行两个程序的例子"中,我们可以假设这是一个利用了共享内存或者线程的示例。VC6(Visual C++ 6.0)是一个较老但经典的开发环境,它支持Windows API编程,其中包含了创建和管理线程的功能。...

    VC++自己写的先进先出队列的例子_QueueDemo

    当一个元素被添加到队列后,它必须等待所有在其之前加入队列的元素被移除,才能被处理,这就是FIFO原则。 在C++中,可以使用标准模板库(STL)中的`queue`容器来创建和操作队列,但在这个示例中,开发者可能选择...

    Java线程同步例子.pdf

    根据提供的文件内容,我们可以看到一个典型的Java线程同步的例子,其中涉及到了生产者(Producer)和消费者(Consumer)模式,以及同步方法和同步代码块的使用。 知识点一:生产者消费者模式 生产者消费者模式是多...

    ConcurrentQueue队列安全例子【调试输出显示结果】

    总的来说,`ConcurrentQueue<T>`是C#中并发编程的一个强大工具,它允许开发者在多线程环境下高效地处理数据队列,而无需担心同步问题。理解和熟练使用`ConcurrentQueue<T>`可以帮助我们编写出更加健壮、高效的并发...

    smallrtos51的一个例子

    在这个例子中,可以创建一个队列来存储接收到的串口数据,以便其他任务可以处理这些数据。使用`xQueueCreate()`创建队列,`xQueueSend()`和`xQueueReceive()`分别用于向队列发送和接收数据。 4. **中断处理**:串口...

    数据结构实验例子

    1. **数组**:数组是最基本的数据结构,它是一个元素类型相同的集合,通过索引访问。实验中可能会有数组排序(如冒泡排序、插入排序、快速排序等)的练习,帮助理解数组操作的时间复杂度和空间效率。 2. **链表**:...

    一个实现IPC机制的例子

    本篇文章将详细讲解四种常见的IPC机制,并通过一个名为“MessagerTest”的例子来进一步阐述。 1. **管道(Pipes)** 管道是一种半双工的通信方式,数据只能单向流动。在Unix/Linux系统中,管道通常用于父子进程之间...

    Event和Overlapped小例子

    "Event和Overlapped小例子"可能是一个教学示例,演示了如何结合这两者来创建一个功能完善的多线程应用程序。通过理解和实践这样的例子,开发者可以更好地掌握Windows系统级编程,特别是对于需要高性能和高并发性的...

    多线程例子

    在Windows操作系统中,每个窗口通常对应一个线程,但在这个例子中,每个窗口被设计为一个独立的进程,这可能是为了更好地展示不同进程间的并发执行和资源管理。 使用四个进程而不是四个线程可能有以下原因: 1. **...

    JQuery等待小例子

    当对同一个元素连续调用多个动画方法时,这些方法会被自动放入一个队列中,按照顺序逐一执行。如果希望改变这个默认行为,可以使用`.queue()`方法来管理队列,或者使用`.dequeue()`来手动触发队列中的下一个动作。 ...

    一个非常不错的进程通信例子

    在标题“一个非常不错的进程通信例子”中,我们可以理解为这个压缩包提供了一个示例,用于演示和教育如何在不同进程中进行有效的通信。 在描述中,“有关进程通信的例子,非常不错,强烈推荐下载学习”,这表明这个...

    100个JAVA编程的典型例子

    这些例子会逐步引导你理解如何在实际编程中运用这些基础知识,比如创建一个简单的计算器程序,或实现一个字符串操作的工具类。 其次,面向对象编程(OOP)是Java的核心特性,例子中将涵盖封装、继承和多态。你可以...

    JAVA代码大全的例子

    总的来说,"JAVA代码大全的例子"是一个宝贵的教育资源,它涵盖了Java编程的各个方面,无论你是初学者还是经验丰富的开发者,都能从中受益。通过逐个研究这些例子,你将能够逐步提高你的编程技能,更好地理解和运用...

    一个最简单的多线程例子

    本文将详细解释标题为"一个最简单的多线程例子"的VC多线程示例,以及如何利用这些概念来提升应用程序的性能。 首先,我们需要理解什么是线程。线程是操作系统分配CPU时间的基本单位,一个进程可以包含一个或多个...

    Jms的例子 不错的例子

    队列遵循一对一的模型,每个消息仅由一个消费者接收;主题遵循一对多模型,多个订阅者可以接收同一个消息。 在JMS实现中,有多种提供商,如ActiveMQ、RabbitMQ和Apache Qpid等。每个提供商都有自己的API实现,但都...

    带你看看Java-AQS同步器 源码解读四 条件队列Condition上

    而`signal()`方法唤醒一个在条件队列等待的线程,将其移回到同步队列,等待获取锁。`signalAll()`则唤醒所有等待的线程。 源码分析中,我们可以看到`Condition`的`await()`方法会使得当前线程释放锁、加入条件队列...

Global site tag (gtag.js) - Google Analytics