当前位置: 首页 > wzjs >正文

做公司的网站的需求有哪些wordpress怎样给目录增加

做公司的网站的需求有哪些,wordpress怎样给目录增加,提供资料下载的网站如何建设,ppt免费下载雷锋网站当线程池的任务队列满时,可以采取以下几种策略来处理多余的任务: 丢弃任务:直接丢弃任务。等待任务空间:任务等待线程池有空余的线程来处理。将任务存储到 Redis:将任务存储到 Redis 队列中,待线程池有空闲…

当线程池的任务队列满时,可以采取以下几种策略来处理多余的任务:

  1. 丢弃任务:直接丢弃任务。
  2. 等待任务空间:任务等待线程池有空余的线程来处理。
  3. 将任务存储到 Redis:将任务存储到 Redis 队列中,待线程池有空闲线程时再取出处理。

如果你使用的是 Spring 框架,并且希望在任务队列满时使用 RedisTemplate 将任务存储到 Redis 中,可以按照以下步骤进行实现:

关键步骤:

  1. 设置线程池:使用 ThreadPoolExecutor 配置线程池,并指定 RejectedExecutionHandler 来处理任务拒绝策略。
  2. 将任务存储到 Redis:当线程池队列满时,将任务存储到 Redis 队列中,待线程池有空闲时再取出处理。

示例代码

1. 创建 ThreadPoolExecutor 和自定义的任务拒绝策略:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.concurrent.*;@Service
public class TaskService {private static final String TASK_QUEUE = "taskQueue";// 定义线程池大小和队列容量private static final int THREAD_POOL_SIZE = 5;private static final int QUEUE_CAPACITY = 10;// 注入 RedisTemplate 用于操作 Redis@Autowiredprivate RedisTemplate<String, String> redisTemplate;private ExecutorService executorService;public TaskService() {// 创建线程池,设置自定义的任务拒绝策略executorService = new ThreadPoolExecutor(THREAD_POOL_SIZE, THREAD_POOL_SIZE, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<>(QUEUE_CAPACITY), new ThreadPoolExecutor.CallerRunsPolicy());}// 提交任务到线程池public void submitTask(Runnable task) {try {executorService.submit(task);} catch (RejectedExecutionException e) {// 如果任务队列满了,将任务存储到 RedisSystem.out.println("线程池任务队列已满,将任务保存到 Redis...");redisTemplate.opsForList().leftPush(TASK_QUEUE, task.toString());}}// 从 Redis 中获取任务并执行public void processRedisTasks() {while (true) {// 从 Redis 中取出任务String taskFromRedis = redisTemplate.opsForList().rightPop(TASK_QUEUE);if (taskFromRedis != null) {// 执行从 Redis 取出的任务System.out.println("从 Redis 获取到任务:" + taskFromRedis);executorService.submit(() -> {System.out.println(Thread.currentThread().getName() + " 执行任务: " + taskFromRedis);try {// 模拟任务执行时间Thread.sleep(2000);} catch (InterruptedException e) {Thread.currentThread().interrupt();}});}try {// 暂停一段时间再去 Redis 获取任务Thread.sleep(1000);} catch (InterruptedException e) {Thread.currentThread().interrupt();}}}
}
2. 创建任务并提交:
public class Task implements Runnable {private String taskName;public Task(String taskName) {this.taskName = taskName;}@Overridepublic void run() {// 任务执行逻辑System.out.println("任务: " + taskName + " 被执行...");try {Thread.sleep(2000);} catch (InterruptedException e) {Thread.currentThread().interrupt();}}@Overridepublic String toString() {return taskName;}
}
3. 使用 TaskService 提交任务并启动 Redis 任务处理:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Application implements CommandLineRunner {@Autowiredprivate TaskService taskService;public static void main(String[] args) {SpringApplication.run(Application.class, args);}@Overridepublic void run(String... args) throws Exception {// 模拟任务提交for (int i = 0; i < 20; i++) {taskService.submitTask(new Task("任务 " + i));}// 启动一个线程来处理从 Redis 获取的任务new Thread(() -> taskService.processRedisTasks()).start();}
}

关键点:

  1. 线程池配置:通过 ThreadPoolExecutor 设置线程池大小和任务队列的容量,使用 CallerRunsPolicy 作为拒绝策略,当队列满时,当前线程将会执行任务。
  2. 任务存储到 Redis:当线程池队列满时,将任务的标识(或者可以是任务本身)存储到 Redis 的队列中。RedisTemplate 提供了简洁的 API 用于操作 Redis 数据。
  3. 从 Redis 获取任务:在独立的线程中定时从 Redis 获取任务并提交到线程池中执行。

RedisTemplate 使用说明:

  • redisTemplate.opsForList().leftPush(TASK_QUEUE, task):将任务添加到 Redis 队列的左侧。
  • redisTemplate.opsForList().rightPop(TASK_QUEUE):从 Redis 队列的右侧取出任务。

这种方式能够保证任务在线程池满时不会丢失,而是被暂时存储到 Redis 中,待线程池有空闲线程时再进行处理。


文章转载自:

http://dFdWIKVe.ndpzm.cn
http://4UpQTjLt.ndpzm.cn
http://R3H8Pc9j.ndpzm.cn
http://18hweUE4.ndpzm.cn
http://VRTT8msc.ndpzm.cn
http://Bd8tLE77.ndpzm.cn
http://D3nvmReO.ndpzm.cn
http://DmethDSQ.ndpzm.cn
http://uEZRi4wu.ndpzm.cn
http://dWdy8mSA.ndpzm.cn
http://CkoULbII.ndpzm.cn
http://yQSMtN3H.ndpzm.cn
http://FaEC4NCC.ndpzm.cn
http://tqbgadTy.ndpzm.cn
http://wdrJHlzl.ndpzm.cn
http://9QcwDb0m.ndpzm.cn
http://pmbZxQTH.ndpzm.cn
http://SRwef3RV.ndpzm.cn
http://8rtnNycs.ndpzm.cn
http://rTFXewvv.ndpzm.cn
http://4UMwL4yd.ndpzm.cn
http://81K6WjdL.ndpzm.cn
http://cfSydUAw.ndpzm.cn
http://3yuWR5CV.ndpzm.cn
http://iCscwXen.ndpzm.cn
http://KBOOAHOh.ndpzm.cn
http://Kd2M1Ueg.ndpzm.cn
http://DdDkcMEa.ndpzm.cn
http://MmkhKufz.ndpzm.cn
http://lJZBtkW7.ndpzm.cn
http://www.dtcms.com/wzjs/662994.html

相关文章:

  • php电子商务网站开发做证券考试的网站
  • 360如何做网站建设银行网站不能登录密码错误
  • wp网站怎么用插件做html网页滕州seo
  • 用别人的资源做网站企业查查网官网
  • 大连网站开发需要多少钱烟台环保网站建设
  • 万网网站建设 优帮云辽源seo
  • 怎么做个人网站wordpress不安全么
  • 嘉兴网站公司宿迁网站建设
  • 域名解析平台网站建设在哪制作一个简单的网页
  • 秦皇岛网络编辑网站霍山有没有做建网站的
  • 专门做网页的软件网站点击排名优化
  • 秦皇岛网站建设价格网络小说网站三巨头
  • 什么犁网站做淘宝门头江油移动网站建设
  • 保险网站有哪些门户网站简介
  • 网站页面设计欣赏网站建设请示
  • 违法网站开发是做网站编辑还是做平面设计
  • 新开传奇网站推荐娱乐新闻做的好的网站
  • 四川省建设厅职改办网站北京网页设计工资一般多少
  • 如何找百度做网站公司怎么建设官网
  • 视频背景网站网站举报在哪举报
  • 做网站盈利方式阿里云官方网
  • 南宁seo站内关键词优化西安今天的新消息未央区
  • 最新备案网站查询珠海市网站建设制作设计平台
  • 南同网站建设商场网站建设模板
  • 自己搭建视频播放网站公司网站设计与管理
  • 数据库跟网站内容时间轴 wordpress
  • 网站架构设计师薪资水平廊坊企业免费建站
  • 建设网站平台哪里最好做设计网站的工作
  • 北京手机网站制作公司江阴网站开发
  • 营销方案英文衡水网站seo