解决一书多卖的问题。
class内的书要static修饰,这样实例化多个class对象后,他们都使用同一个副本【书】。
假设我们有一个名为Person的类,其中包含一个名为Name的属性。我们可以创建两个线程,一个线程用于设置Person对象的Name属性,另一个线程用于读取该属性。为了确保线程安全,我们可以使用lock语句来控制对Person对象的访问。
下面是一个示例代码:
```
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
// 创建一个线程用于设置Person对象的Name属性
Thread setNameThread = new Thread(() =>
{
lock (person)
{
person.Name = "Alice";
}
});
// 创建一个线程用于读取Person对象的Name属性
Thread getNameThread = new Thread(() =>
{
lock (person)
{
Console.WriteLine(person.Name);
}
});
setNameThread.Start();
getNameThread.Start();
setNameThread.Join();
getNameThread.Join();
}
}
```
在上面的代码中,我们创建了一个Person对象,并使用lock语句来确保在一个线程设置Name属性时,另一个线程不能同时读取该属性。setNameThread线程设置Name属性为"Alice",getNameThread线程读取该属性并将其输出到控制台。最后,我们使用Join方法等待两个线程完成。