线程1随机产生数字(1-1000之内),线程2判断此数字如果是3的倍数,则提醒,用C#语言回答
时间: 2024-04-10 07:27:38 浏览: 18
可以使用C#的多线程来实现这个需求。以下是一个示例代码:
```csharp
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建一个共享的随机数生成器
Random random = new Random();
// 创建一个ManualResetEvent对象用于线程同步
ManualResetEvent resetEvent = new ManualResetEvent(false);
// 创建线程1,用于随机产生数字
Thread thread1 = new Thread(() =>
{
while (true)
{
int number = random.Next(1, 1001);
Console.WriteLine("线程1产生的数字:" + number);
// 设置事件,通知线程2可以进行判断
resetEvent.Set();
Thread.Sleep(1000);
}
});
// 创建线程2,用于判断数字是否是3的倍数
Thread thread2 = new Thread(() =>
{
while (true)
{
// 等待线程1产生数字并设置事件
resetEvent.WaitOne();
// 判断数字是否是3的倍数
if (number % 3 == 0)
{
Console.WriteLine("线程2提醒:数字是3的倍数!");
}
// 重置事件,等待下一次触发
resetEvent.Reset();
}
});
// 启动线程1和线程2
thread1.Start();
thread2.Start();
// 主线程等待按下回车键后退出
Console.ReadLine();
// 终止线程
thread1.Abort();
thread2.Abort();
}
}
```
这个示例中,线程1使用一个循环来随机产生数字,并通过`resetEvent.Set()`设置事件,通知线程2可以进行判断。线程2使用`resetEvent.WaitOne()`等待线程1的通知,然后判断数字是否是3的倍数并输出结果。注意,为了让线程2有足够的时间等待线程1的通知,我们在线程1中添加了一段休眠时间。
请注意这只是一个简单的示例,实际应用中可能需要更复杂的线程同步和错误处理机制。