下面是我的测试用例,请指教!
public class Test {
public static void main(String[] args) {
ExecutorService exec = Executors.newCachedThreadPool();
for(int i = 0; i < 10; i++) {
exec.execute(new LocalThread());
}
}
}
class LocalThread implements Runnable{
private final Random rand = new Random(47);
@Override
public void run() {
try {
while(!Thread.interrupted()) {
System.out.println(Thread.currentThread().getId() + " - " + rand.nextInt(3));
TimeUnit.MILLISECONDS.sleep(100);
}
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
输出:
0 - 2
3 - 2
2 - 2
1 - 2
4 - 2
2 - 2
4 - 2
0 - 2
1 - 2
3 - 2
3 - 1
2 - 1
0 - 1
4 - 1
1 - 1
把暂停去掉
class LocalThread implements Runnable{
private final Random rand = new Random(47);
private final int id;
public LocalThread(int id) {
this.id = id;
}
@Override
public void run() {
while(!Thread.interrupted()) {
System.out.println(id + " - " + rand.nextInt(3));
}
}
}
输出
1 - 1
1 - 1
1 - 0
1 - 2
1 - 0
1 - 0
1 - 2
1 - 0
1 - 1
1 - 2
0 - 0
0 - 1
3 - 0
...
public class TestRandom {
public static void main(String[] args) {
ExecutorService exec = newCachedThreadPool();
for (int i = 0; i < 4; i++) {
exec.execute(new LocalThread());
}
}
}
class LocalThread implements Runnable {
private final Random rand = new Random(47);
@Override
public void run() {
int total = 1;
try {
while (total <= 5) {
System.out.println(Thread.currentThread().getId() + " - " + total + "-" + rand.nextInt(3));
total++;
TimeUnit.MILLISECONDS.sleep(3000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这是我改了时间和增加打印运行次数的例子 结果就是下面
11 - 1-2
13 - 1-2
12 - 1-2
14 - 1-2
13 - 2-2
11 - 2-2
12 - 2-2
14 - 2-2
11 - 3-1
13 - 3-1
12 - 3-1
14 - 3-1
11 - 4-2
12 - 4-2
13 - 4-2
14 - 4-2
12 - 5-1
11 - 5-1
13 - 5-1
14 - 5-1
每个线程的序列都是 2 2 1 2 1 这个就是这个种子伪随机创建出来的随机序列