每个布尔真组合的新线程

New thread per each boolean true combination

我对实现此目标的更好方法有疑问:

我有一个 Class,其中包含 5 个布尔变量(例如:11111,是一个组合)。现在,问题是我将为每个真正的组合启动一个新线程,这意味着如果我有 11000,我想为 11000 启动一个线程,另一个为 10000,最后一个为 01000。

我必须知道输入组合的所有值。最明显和最低效的方法是只比较所有 32 个(在本例中)组合(00000、00001 等),并且仅在和实际值 (11000) 的 AND 为 != 0 时开始,这将是我之前提到的情况(11000、10000 和 01000)。

在那种情况下,我每次都必须进行 32 次比较。问题是,如果那时我有 6 个布尔值,现在我必须做 64 个,依此类推。

谁能想出更好的策略来“捕获”每个组合?

我认为唯一更快的方法是通过预先计算。

所以,应该使用String[][] arr;for (String a : arr[5]) {/* thread creation etc */}

其中“5”是“00101”。

也可能有帮助:Integer.toBinaryString(5)(int) Long.parseLong("00101", 2)