后端技术栈介绍-多线程篇

多线程的核心思想:首先创建线程,在线程中并发的执行任务,这些执行的任务会,线程是执行程序的,这些线程有一个线程池管理,队列是在线程池中使用到

ThreadPoolExecutor是线程池中的具体的实现类,这个类中有一些具体的方法可以使用:

  • execute(Runnable command): 将任务提交到线程池中执行。
  • submit(Callable<T> task): 将任务提交到线程池中执行,并返回一个Future对象,该对象可以用于获取任务执行结果。
  • shutdown(): 关闭线程池,不再接受新的任务。
  • shutdownNow(): 关闭线程池,并尝试停止所有正在执行的任务。
  • getActiveCount(): 获取当前正在执行任务的线程数量。
  • getTaskCount(): 获取已经提交到线程池中的任务数量。

具体的使用方法如下:

static{
		BlockingQueue<Runnable> workQueue = new LinkedBlockingDeque<Runnable>(10000);
		
		threadPool = new ThreadPoolExecutor(processorCount * 20, processorCount * 1000, 1, TimeUnit.MINUTES, workQueue, new NamedThreadFactory("sutu-thread-pool"));
	}
	
	public static ThreadPoolExecutor getThreadPool(String why){
		if(logger.isInfoEnabled()){
			logger.debug("准备申请线程资源执行[" + why + "]");
		}
		return threadPool;
	}



CommonThreadPool.getThreadPool("同步Coupang店铺订单状态" + shop.getShopId()).execute(new InnerOrderStateSyncTask(shop, enterpriseId))

这个例子中是使用了阻塞队列放入到线程池中。

建议

多线程的使用场景,首先这个任务要是需要长时间执行的并且可以拆分成多个任务的,每个任务之间没有联系。如果有其他的函数需要等待多线程执行得到结果才能继续执行,则应该考虑保序等问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值