ファイルからいくつかのプロパティを読み取ることになっているプロジェクトに取り組んでいます。以下は私のプロパティファイルです-
NUMBER_OF_THREADS: 10
RANGE_VALID_USER_ID: 1-5000
RANGE_NON_VALID_USER_ID: 10000-50000
PERCENTAGE_VALID_USER_ID: 95
これは、上記のプロパティから、number of threads
is 10
、次に range of valid user id's
is from 1 to 5000
、および range of non valid user id
is fromであることを意味します10000-50000
。最も重要なことは95% of time
、各スレッドが有効なユーザー ID 範囲から ID を選択する必要があることです。つまり、有効5% of time
でないユーザー ID 範囲から ID を選択するということです。 .
以下は私が書いた私のプログラムです。上記のプロパティファイルを読み込みます。
private static Properties prop = new Properties();
private static int threads;
private static int startValidRange;
private static int endValidRange;
private static int startNonValidRange;
private static int endNonValidRange;
private static double percentageValidId;
public static void main(String[] args) {
// create thread pool with given size
ExecutorService service = Executors.newFixedThreadPool(threads);
try {
readPropertyFile();
for (int i = 0; i < threads; i++) {
service.submit(new ReadTask());
}
} catch (InterruptedException e) {
} catch (IOException e) {
}
}
private static void readPropertyFile() throws IOException {
prop.load(Read.class.getClassLoader().getResourceAsStream("config.properties"));
threads = Integer.parseInt(prop.getProperty("NUMBER_OF_THREADS"));
startValidRange = Integer.parseInt(prop.getProperty("RANGE_VALID_USER_ID").split("-")[0]);
endValidRange = Integer.parseInt(prop.getProperty("RANGE_VALID_USER_ID").split("-")[1]);
startNonValidRange = Integer.parseInt(prop.getProperty("RANGE_NON_VALID_USER_ID").split("-")[0]);
endNonValidRange = Integer.parseInt(prop.getProperty("RANGE_NON_VALID_USER_ID").split("-")[1]);
percentageValidId = Double.parseDouble(prop.getProperty("PERCENTAGE_VALID_USER_ID"));
}
以下はReadTask class
実装する私のものRunnable Interface
です。
class ReadTask implements Runnable {
public ReadTask() {
}
@Override
public void run() {
long startTime = System.currentTimeMillis();
long endTime = startTime + (durationOfRun*60*1000);
while (System.currentTimeMillis() <= endTime) {
/* Print valid user id 95% of time
* and remaining 5% of time it will print
* non valid user id.
*/
}
}
}
現在私の run メソッドでわかるように、各スレッドは特定の期間実行され、その特定の期間に、95% の時間で有効なユーザー ID を選択し、残りの 5% の時間で非選択を選択します。有効なユーザー ID。
私の質問:-
現在、私はこの問題に悩まされています。各スレッドが有効なユーザー ID の 95% を使用し、残りの 5% を使用するようにする方法は、無効なユーザー ID を選択します。
どの部分でも明確でない場合はお知らせください。どんな提案でも、この問題を解決するのに大いに役立ちます。