java队列实现异步执行

1、会有很多线程给一个队列上添加任务 2、有一个或者多个线程逐个执行队列的任务 考虑一下几点:1、没有任务时,队列执行线程处于等待状态 2、添加任务时,激活队列执行线程,全部run起来,首先抢到任务的执行,其他全部wait 给个小例子吧 package org;import java.util.LinkedList;import java.util.List...
java队列实现异步执行
在整个思路上要调整一下
1、会有很多线程给一个队列上添加任务
2、有一个或者多个线程逐个执行队列的任务

考虑一下几点:
1、没有任务时,队列执行线程处于等待状态
2、添加任务时,激活队列执行线程,全部run起来,首先抢到任务的执行,其他全部wait

给个小例子吧
package org;import java.util.LinkedList;import java.util.List;public class Queues {public static List<Task> queue = new LinkedList<Task>();/** * 假如 参数o 为任务 * @param o */public static void add (Task t){synchronized (Queues.queue) {Queues.queue.add(t); //添加任务Queues.queue.notifyAll();//激活该队列对应的执行线程,全部Run起来}}static class Task{public void test(){System.out.println("我被执行了");}}}package org;import java.util.List;public class Exec implements Runnable{@Overridepublic void run() {while(true){synchronized (Queues.queue) {while(Queues.queue.isEmpty()){ //try {Queues.queue.wait(); //队列为空时,使线程处于等待状态} catch (InterruptedException e) {e.printStackTrace();}System.out.println("wait...");}Queues.Task t= Queues.queue.remove(0); //得到第一个t.test(); //执行该任务System.out.println("end");}}}public static void main(String[] args) {Exec e = new Exec();for (int i = 0; i < 2; i++) {new Thread(e).start(); //开始执行时,队列为空,处于等待状态}//上面开启两个线程执行队列中的任务,那就是先到先得了//添加一个任务测试Queues.Task t =new Queues.Task();Queues.add(t); //执行该方法,激活所有对应队列,那两个线程就会开始执行啦}}
上面的就是很简单的例子了
2014-11-14
你想问什么呢?判断队列是否有值?取队列中的值?
这两个问题你能完成的话还有啥需要解决呢?跟你以前的需求不一样么?2014-05-26
mengvlog 阅读 7 次 更新于 2025-07-20 01:20:36 我来答关注问题0
  •  深空见闻 java方法异步调用 怎么使用配置化实现

    在@Async注解中,可以通过指定线程池Bean的名称来使用自定义的线程池。调用异步方法:在需要调用异步方法的地方,直接调用被@Async注解标记的方法即可。调用者线程将不会阻塞,而是立即返回,继续执行后续的代码。通过以上步骤,就可以在Java项目中实现配置化的异步方法调用。这种方式不仅可以提高系统的响应性能...

  • 1、没有任务时,队列执行线程处于等待状态 2、添加任务时,激活队列执行线程,全部run起来,首先抢到任务的执行,其他全部wait 给个小例子吧 package org;import java.util.LinkedList;import java.util.List;public class Queues {public static List queue = new LinkedList();/** * 假...

  •  文暄生活科普 Java实现异步编程的8种方式

    4.6 消息队列:通过消息队列(如RabbitMQ、Kafka等)实现异步通信,消息生产者将任务发送到队列中,消费者异步处理这些消息。4.7 ThreadUtil异步工具类:提供了一系列简化异步编程的工具方法,如线程安全的异步执行、异步回调等。4.8 Guava异步:Guava库提供了ListenableFuture接口,通过监听器机制实现异步结果...

  •  育知同创教育 java 异步发送短信,异步怎么实现

    java 异步发送短信,异步实现:1,使用spring框架的异步注解 @Async ,底层应该是一个线程。2,简单粗暴的方式:开一个线程 new Thread(new Runnable() { public void run() { //发送短信 } }).start();当然也可以高级一点,使用线程池。3,更高端一点:使用消息队列MQ ...

  •  翡希信息咨询 Java异步任务优化CompletionService

    任务执行与结果添加:任务执行完毕后,run方法调用done方法,将封装了任务结果的FutureTask添加至阻塞队列。性能优化:CompletionService通过优化任务执行和结果获取流程,显著提高了异步任务的执行效率和资源利用率,避免了不必要的等待和资源浪费。总结:作为Java程序员,理解和掌握CompletionService的使用对于优化代码...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部