java - 有没有办法限制 .getId()

标签 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) 之间的随机数。

最佳答案

通过使用 % ( 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

...可能有道理。

关于java - 有没有办法限制 .getId(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50182453/

相关文章:

java - 如何获取Azure存储中文件、表和队列的所有服务的大小?在JAVA中

java - mongodb mongoTemplate 获取具有某些条件的不同字段

java - Blackberry - Java - 阿拉伯语显示 JSON 输出已损坏

java - 为什么我无法创建自定义 String 类的实例,而我能够创建自定义 System 类的实例

sql - 如何为 PostgreSQL 编写我自己的全局锁定/解锁函数

c++ - 并发性::可组合/C++

c# - 停止两个异步方法与另一个方法同时运行

java - 我没有收到我打算进行第二次 Activity 时传递的字符串

concurrency - 克隆 Arc 时会发生什么?

ios - 为什么异步网络测试在 Objective-C/Swift 中很困难?