我正在做一个项目,我应该从文件中读取几个属性。以下是我的属性文件-
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 方法中看到的那样,每个线程将运行特定的时间段,并且在特定的时间段内,它将选择有效的用户 id 95% 的时间和剩余的 5% 的时间,它将选择非有效的用户 ID。
我的问题:-
目前我被困在这个问题上,如何确保每个线程将使用 95% 的时间有效用户 ID 和剩余 5% 的时间,它将选择非有效用户 ID。
如果我在任何部分不清楚,请告诉我。任何建议都会对解决这个问题有很大帮助。