后台服务有一个Runnable用于向另个服务器上传数据,队列用的是无界队列ConcurrentLinkedQueue,借用ScheduledThreadPoolExecutor管理线程,ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5)
executor.scheduleAtFixedRate(new Task(), 0, 100, TimeUnit.SECOND);其中Task类实现了Runnable接口,由于访问数据量比较大,100秒一个任务设置得不太合适,并且Task里面又有判断需要上传的数据是否满足间隔时间,所以现在队列里面数据量已经很大了,甚至几天前的数据都还在队列里。
我的问题是,ScheduledThreadPoolExecutor既然是每个100s用一个线程跑一次任务,那么是否总有几个线程是空闲的(因为我的Task业务逻辑并不复杂,只是上传数据,http请求而已),怎样最大化这几个线程的最大效率,让他们一直工作?或者让每个线程都是间隔100秒跑一次任务,而不是每次让一个线程跑?
对jdk不是很熟,时间又比较急,所以来问了,请多多指教。Java服务器多线程并发