将集合划分为较小的子集并作为批处理

帕万

我的应用程序中有一个连续运行的线程,该线程由一个HashSet组成,用于存储应用程序内部的所有符号。根据编写时的设计,它将在线程的while条件为true的状态下连续迭代HashSet,并更新HashSet中包含的所有符号的数据库。

HashSet内可能出现的最大符号数约为6000。我不想一次用所有6000个符号更新数据库,而是将此HashSet分为500个不同的子集(每个集12个)并执行每个子集都独立,并且在每个子集之后都有一个线程休眠15分钟,这样我就可以减轻数据库的压力。

这是我的代码(示例代码段)

如何将集合划分为较小的子集和过程(我已经看到了将ArrayList,TreeSet进行分区的示例,但是没有找到与HashSet相关的任何示例)

package com.ubsc.rewji.threads;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.PriorityBlockingQueue;

public class TaskerThread extends Thread {
    private PriorityBlockingQueue<String> priorityBlocking = new PriorityBlockingQueue<String>();
    String symbols[] = new String[] { "One", "Two", "Three", "Four" };
    Set<String> allSymbolsSet = Collections
            .synchronizedSet(new HashSet<String>(Arrays.asList(symbols)));

    public void addsymbols(String commaDelimSymbolsList) {
        if (commaDelimSymbolsList != null) {
            String[] symAr = commaDelimSymbolsList.split(",");
            for (int i = 0; i < symAr.length; i++) {
                priorityBlocking.add(symAr[i]);
            }
        }
    }

    public void run() {
        while (true) {
            try {
                while (priorityBlocking.peek() != null) {
                    String symbol = priorityBlocking.poll();
                    allSymbolsSet.add(symbol);
                }
                Iterator<String> ite = allSymbolsSet.iterator();
                System.out.println("=======================");
                while (ite.hasNext()) {
                    String symbol = ite.next();
                    if (symbol != null && symbol.trim().length() > 0) {
                        try {
                            updateDB(symbol);

                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
                Thread.sleep(2000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public void updateDB(String symbol) {
        System.out.println("THE SYMBOL BEING UPDATED IS" + "  " + symbol);
    }

    public static void main(String args[]) {
        TaskerThread taskThread = new TaskerThread();
        taskThread.start();

        String commaDelimSymbolsList = "ONVO,HJI,HYU,SD,F,SDF,ASA,TRET,TRE,JHG,RWE,XCX,WQE,KLJK,XCZ";
        taskThread.addsymbols(commaDelimSymbolsList);

    }

}
阿米尔(Amir Pashazadeh)

做类似的事情

private static final int PARTITIONS_COUNT = 12;

List<Set<Type>> theSets = new ArrayList<Set<Type>>(PARTITIONS_COUNT);
for (int i = 0; i < PARTITIONS_COUNT; i++) {
    theSets.add(new HashSet<Type>());
}

int index = 0;
for (Type object : originalSet) {
    theSets.get(index++ % PARTITIONS_COUNT).add(object);
}

现在,您已将分区originalSet为其他12个HashSet。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

将集合划分为具有相等字段的对象子集?

来自分类Dev

MATLAB:根据向量将单元的成员划分为较小的单元

来自分类Dev

MATLAB:根据向量将单元的成员划分为较小的单元

来自分类Dev

将任务划分为较小的部分(多线程)

来自分类Dev

将字典划分为较小字典的列表

来自分类Dev

如何将列表划分为相似的平均子集

来自分类Dev

将数据帧子集划分为相等的子组块

来自分类Dev

将每x列的子集划分为单独的站点

来自分类Dev

根据线段将点集划分为子集

来自分类Dev

将数字数组按接近度划分为集合

来自分类Dev

根据列将数据集划分为子集,并对子集执行重复操作

来自分类Dev

Node.js:将代码划分为较小的功能-这样好吗?

来自分类Dev

如何在静音段将音频文件(mp3或wav)划分为较小的文件

来自分类Dev

如何将一个列表划分为一个较小的列表

来自分类Dev

将python列表划分为列表的子集(子集的数量越少越好),每个子集的总和小于K

来自分类Dev

如何将正负数列表划分为总和为0的最大子集?

来自分类Dev

如何将包含日期的一维数组划分为几个较小的数组(二维数组)

来自分类Dev

将点划分为区域

来自分类Dev

将表划分为子表

来自分类Dev

将网络划分为子网

来自分类Dev

将任务划分为类别

来自分类Dev

将整数划分为范围

来自分类Dev

使用Python将非唯一实体划分为唯一集合

来自分类Dev

确定给定的集合是否可以划分为两个子集,使得两个子集中的元素之和相同

来自分类Dev

Python多重处理(将数据拆分为较小的块-多个函数参数)

来自分类Dev

Python多重处理(将数据拆分为较小的块-多个函数参数)

来自分类Dev

如何将一组节点划分为每个形成有向无环图的子集

来自分类Dev

如何有效地将数据帧子集划分为多个块以传递给列表列表

来自分类Dev

Windows批处理文件Modulo划分

Related 相关文章

  1. 1

    将集合划分为具有相等字段的对象子集?

  2. 2

    MATLAB:根据向量将单元的成员划分为较小的单元

  3. 3

    MATLAB:根据向量将单元的成员划分为较小的单元

  4. 4

    将任务划分为较小的部分(多线程)

  5. 5

    将字典划分为较小字典的列表

  6. 6

    如何将列表划分为相似的平均子集

  7. 7

    将数据帧子集划分为相等的子组块

  8. 8

    将每x列的子集划分为单独的站点

  9. 9

    根据线段将点集划分为子集

  10. 10

    将数字数组按接近度划分为集合

  11. 11

    根据列将数据集划分为子集,并对子集执行重复操作

  12. 12

    Node.js:将代码划分为较小的功能-这样好吗?

  13. 13

    如何在静音段将音频文件(mp3或wav)划分为较小的文件

  14. 14

    如何将一个列表划分为一个较小的列表

  15. 15

    将python列表划分为列表的子集(子集的数量越少越好),每个子集的总和小于K

  16. 16

    如何将正负数列表划分为总和为0的最大子集?

  17. 17

    如何将包含日期的一维数组划分为几个较小的数组(二维数组)

  18. 18

    将点划分为区域

  19. 19

    将表划分为子表

  20. 20

    将网络划分为子网

  21. 21

    将任务划分为类别

  22. 22

    将整数划分为范围

  23. 23

    使用Python将非唯一实体划分为唯一集合

  24. 24

    确定给定的集合是否可以划分为两个子集,使得两个子集中的元素之和相同

  25. 25

    Python多重处理(将数据拆分为较小的块-多个函数参数)

  26. 26

    Python多重处理(将数据拆分为较小的块-多个函数参数)

  27. 27

    如何将一组节点划分为每个形成有向无环图的子集

  28. 28

    如何有效地将数据帧子集划分为多个块以传递给列表列表

  29. 29

    Windows批处理文件Modulo划分

热门标签

归档