有没有办法限制.getId()

时间:2018-05-04 20:13:14

标签: java concurrency

Thread thbus = new Thread(bus);
bus.setName("Bus"+ thbus.getId());

Thread thmechanics = new Thread(bus);
bus.setMechanicsName("Mechanic "+ thmechanics.getId());

thbus.start();

这些生成我的其他类中的线程。 "Mechanic "+ thmechanics.getId()行会打印"Mechanic" +随机数。我想知道是否有办法使用.getId()在(1-5)之间打印随机数。

1 个答案:

答案 0 :(得分:3)

使用%modulo)运算符轻松/实用地完成:

(thread.getId() % 5 ) + 1

欢迎;)

由于mod-in-java-produces-negative-numbers我无法保证,该线程ID始终为正,即使:

Math.abs(thread.getId() % 5) + 1

..甚至better(!):

(thread.getId() % 5 + 5) % 5 + 1

......可能有意义。