私は自分のアプリケーションに連続して実行スレッドを持っています。このスレッドは、アプリケーション内のすべてのシンボルを格納するHashSetで構成されています。 書かれた時点のデザインに従って、スレッドの真の状態でハッシュセットを連続して繰り返し、HashSet内に含まれるすべてのシンボルのデータベースを更新します。小さなサブセットに分割してバッチ処理する
ハッシュセット内に存在する可能性のある最大シンボルは約6000です。 私は6000すべてのシンボルを一度に使っていませんが、このハッシュセットをそれぞれ500個(12個)の異なるサブセットに分割し、各サブセットを個別に実行し、各サブセット後に15分スリープさせるので、データベースへの圧力。
これは、(サンプルコードスニペット)、私のコードです
どのように私はArrayListの、TreeSetのをpartioningの例を見てきました(、小さいサブセットおよびプロセスに設定を分割することができますが、関連するすべての例を見つけることができませんでした
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);
}
}
データベースの "圧力" の概念は奇妙なものです... DBがあります通常、この "圧力"を優雅に扱うことができます。 – TwoThe