例如,如果我有一个班级:
public class Class
{
public Random r;
public Class()
{r= new Random()}
}
Run Code Online (Sandbox Code Playgroud)
然后创建它的两个实例:
Class a = new Class();
Class b = new Class();
Run Code Online (Sandbox Code Playgroud)
并且按顺序调用r,两者的r将给出相同的值.我读过这是因为Random的默认构造函数使用时间来提供"随机性",所以我想知道如何防止这种情况.提前致谢!
实现这一目标的一种方法是制作r static.
static表示只Random r存在一个,并且它将在该类的所有实例之间共享.
你的代码看起来像这样:
public class Class() { static Random r = new Random(); }
Class a = new Class();
Class b = new Class();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用线程,则可以创建它[ThreadStatic](以便每个线程使用自己的Random类实例)
有关于如何在[ThreadStatic] 这里使用的信息- 我自己没有使用它,但它看起来非常酷和漂亮,并摆脱任何潜在的线程相关的困境.
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |