111,097
社区成员




static void Main(string[] args)
{
Thread t1 = new Thread(new ThreadStart(GetRandom));
Thread t2 = new Thread(new ThreadStart(GetRandom));
t1.Start();
t2.Start();
}
class Random
{
public int Value = 0;
}
static Random random=new Random();
static void GetRandom()
{
lock(random)
{
while (true)
{
random.Value = (random.Value * 21 + 3) % 100;//生成隨機數random.Value
Console.WriteLine(random.Value);//可以看到,生成的數字在100個以內是不會有重復的.
}
}
}
class Program
{
public static void GetRandom(object q)
{
lock (q)
{
Console.Write("{0} ", ((Queue<int>)q).Dequeue());
}
}
static void Main(string[] args)
{
Queue<int> q = new Queue<int>();
Random rnd = new Random();
byte[] keys = new byte[90];
rnd.NextBytes(keys);
int[] items = new int[90];
for (int i = 10; i < 100; i++)
{
items[i - 10] = i;
}
Array.Sort(keys, items);
foreach (var item in items)
{
q.Enqueue(item);
}
Thread t1;
Thread t2;
Thread t3;
for (int i = 0; i < 30; i++)
{
t1 = new Thread(Program.GetRandom);
t1.Start(q);
t2 = new Thread(Program.GetRandom);
t2.Start(q);
t3 = new Thread(Program.GetRandom);
t3.Start(q);
}
}
}