public BlockingIOProcessor(int poolSize, int maxQueueSize) { //pool size can't be less than 3. poolSize = Math.max(MINIMUM_ALLOWED_POOL_SIZE, poolSize); this.messagingExecutor = new ThreadPoolExecutor( poolSize / 4, poolSize / 3, 2L, TimeUnit.MINUTES, new ArrayBlockingQueue<>(maxQueueSize), BlynkTPFactory.build("Messaging") ); this.dbExecutor = new ThreadPoolExecutor( poolSize / 3, poolSize / 2, 2L, TimeUnit.MINUTES, new ArrayBlockingQueue<>(250), BlynkTPFactory.build("db")); //local server doesn't use DB usually, so this thread may be not necessary this.dbExecutor.allowCoreThreadTimeOut(true); this.dbGetServerExecutor = new ThreadPoolExecutor(poolSize / 3, poolSize / 3, 2L, TimeUnit.MINUTES, new ArrayBlockingQueue<>(250), BlynkTPFactory.build("getServer")); this.historyExecutor = new ThreadPoolExecutor(poolSize / 4, poolSize / 2, 2L, TimeUnit.MINUTES, new ArrayBlockingQueue<>(250), BlynkTPFactory.build("history")); }
public ReportScheduler(int corePoolSize, String downloadUrl, MailWrapper mailWrapper, ReportingDiskDao reportingDao, Map<UserKey, User> users) { super(corePoolSize, BlynkTPFactory.build("report")); setRemoveOnCancelPolicy(true); setExecuteExistingDelayedTasksAfterShutdownPolicy(false); this.map = new ConcurrentHashMap<>(); this.downloadUrl = downloadUrl; this.mailWrapper = mailWrapper; this.reportingDao = reportingDao; init(users); }
public static void start(Holder holder, BaseServer[] servers) { ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, BlynkTPFactory.build("DataSaver")); var ses = Executors.newScheduledThreadPool(1, BlynkTPFactory.build("TimerAndReading")); ses.scheduleAtFixedRate(holder.timerWorker, startDelay, 1000, MILLISECONDS); ses.scheduleAtFixedRate(holder.readingWidgetsWorker, startDelay + 400, 1000, MILLISECONDS);