本文发表在 rolia.net 枫下论坛首先声明一个工厂类,把这个类作为一个全局变量,以后生成 CarA全部通过这个工厂类来实现,就能达到控制的目的
public calss ClassFactory
{
static bool IsCarAExist=false;
public CarA GetCarA()
{
if( IsCarAExist == false)
{
IsCarAExist = true;
return new CarA();
}
else {
return null;
}
}
}
工厂类应该是“设计模式”最基本的概念,了解一下很有用。
在程序运行时,首先声称这个工厂类,然后在每一个线程内生成CarA class 时用这个工厂类的 GetCarA()函数来完成,当 GetCarA 第一次运行并返回一个 CarA class时,工厂类的static bool IsCarAExist 变为 true. 这样当Thread2 第二次试图用GetCarA() 返回 CarA 类时就会发现已经生成过这样一个类,因而返回null.
我是用C#的思想做的,但java和C#非常相近,估计楼主应该能看懂。具体程序大概如下:
public class Test
{
ClassFactory classFactory=new ClassFactory();
public static void Main()
{
Thread thread1=new thread(ProcessThread1); //确定线程1的运行函数,ProcessThread1()
Thread thread2=new thread(ProcessThread2); //确定线程2的运行函数,ProcessThread2()
thread1.Strat(); // 启动线程一
thread2.Start(); // 启动线程二
}
public void ProcessThread1()
{
CarA carA=classFactory.GetCarA(); // 由工厂类生成 CarA
.....
}
public void ProcessThread2()
{
CarA carA=classFactory.GetCarA();
if (CarA==null)
{
// CarA类已经被创建过一次了
}
}
}更多精彩文章及讨论,请光临枫下论坛 rolia.net
public calss ClassFactory
{
static bool IsCarAExist=false;
public CarA GetCarA()
{
if( IsCarAExist == false)
{
IsCarAExist = true;
return new CarA();
}
else {
return null;
}
}
}
工厂类应该是“设计模式”最基本的概念,了解一下很有用。
在程序运行时,首先声称这个工厂类,然后在每一个线程内生成CarA class 时用这个工厂类的 GetCarA()函数来完成,当 GetCarA 第一次运行并返回一个 CarA class时,工厂类的static bool IsCarAExist 变为 true. 这样当Thread2 第二次试图用GetCarA() 返回 CarA 类时就会发现已经生成过这样一个类,因而返回null.
我是用C#的思想做的,但java和C#非常相近,估计楼主应该能看懂。具体程序大概如下:
public class Test
{
ClassFactory classFactory=new ClassFactory();
public static void Main()
{
Thread thread1=new thread(ProcessThread1); //确定线程1的运行函数,ProcessThread1()
Thread thread2=new thread(ProcessThread2); //确定线程2的运行函数,ProcessThread2()
thread1.Strat(); // 启动线程一
thread2.Start(); // 启动线程二
}
public void ProcessThread1()
{
CarA carA=classFactory.GetCarA(); // 由工厂类生成 CarA
.....
}
public void ProcessThread2()
{
CarA carA=classFactory.GetCarA();
if (CarA==null)
{
// CarA类已经被创建过一次了
}
}
}更多精彩文章及讨论,请光临枫下论坛 rolia.net