Javabean以及Singleton与性能关系不大,使用纯的javabean时,因为没有远程调用,性能比EJB要好,但是javabean中有synchronized关键字的另当别论,这个时候的Singleton成为了“独步桥”,性能会变得低下
import java.util.*;
import org.apache.log4j.*;
public class ThreadImpl extends Thread
{
public void run ()
{
BizTask.getInstance().run();
}
public static void main(String[] args)
{
for (int i = 0; i < 100; i++)
{
ThreadImpl t = new ThreadImpl ();
t.start();
}
}
}
class BizTask
{
private static final Category logger = Category.getInstance (BizTask.class);
private static BizTask instance = null;
private BizTask()
{
super();
}
public static BizTask getInstance()
{
if (instance == null)
instance = new BizTask();
return instance;
}
public synchronized void run ()
{
try
{
Thread.sleep(1000);
logger.debug(new Date());
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
代码中BizTask是一个Singleton实例,但是
public synchronized void run ()方法的synchronized 将严重的影响性能,如果没有这个synchronized ,性能和不使用Singleton实例基本一致