每个布尔真组合的新线程
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)
。
我对实现此目标的更好方法有疑问:
我有一个 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)
。