说说你做过的多线程程序
1).同步20张表数据(跨库),要求开启3个线程每次同步3张表,每个表需要满足一定条件才能同步,先满足的先才开始同步,全部同步完才退出程序。
2).线程优先级不确定,不确定每个表什么时候满足同步条件。
思路:
1.用定长线程池newFixedThreadPool(3)控制并发数。
2.用Iterator remove方法把已经提交到线程池中的任务从列表中排除掉,避免重复执行任务。
3.while(true) 判断列表是否为空,break退出循环,关闭线程池,结束程序。
package com.snake.thread;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExecutorsTest implements Runnable {
private int index;
public ExecutorsTest(int index) {
this.index = index;
}
public static void main(String[] args) {
// 可创建无限个线程,60秒不使用自动回收
/*Executors.newCachedThreadPool();
// 定长线程并发处理,其余的线程在队列中等待加入。
Executors.newFixedThreadPool(3);
// 定长线程并发处理,可定时