Java多线程-实战:说说你做过的多线程程序

本文介绍了使用Java多线程同步20张跨库表的实战经验。通过设置3个线程,每次同步3张表,确保满足特定条件的表优先开始。采用定长线程池newFixedThreadPool控制并发,并利用Iterator去除已执行任务,避免重复,通过while循环监控任务列表,完成所有同步后关闭线程池并结束程序。
摘要由CSDN通过智能技术生成

 说说你做过的多线程程序
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);
		// 定长线程并发处理,可定时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值