to takecare(大厅) :public class BeanFactory { private static BeanFactory beanFactroy = null;
private BeanFactory(){
}
public static BeanFactory getInstance(){ if (beanFactroy==null) beanFactroy=new BeanFactory(); return beanFactroy; } }没有抬杠的意思,呵呵,所以小小的建议
to: bcbboy 不能说takecare的方法浪费, Singleton模式有三种实现方法,takecare的方法是lazy的那种,但是也是最常用的那种,因为你这种方法考虑到多线程访问的话,若两个thread同时getInstance()有可能产生多于一个instance,这样就达不到single的目的了,所以你的方法应该还要synchronized而且是只对getInstance的一部分synchronized,这样的话,代价不也上去了吗?
如何保持单例呢??请详细讲讲
但是在频繁调用这个类的时候
你只希望在第一次调用的时候执行里面的代码
实现某种功能
而在第二次时不希望代码去执行?
如果是这样的话
可以在代码里写If(){}else{}来实现
public class BeanFactory {
private static BeanFactory beanFactroy = new BeanFactory();
private BeanFactory(){
}
/**
* 获取业务操作bean工厂的实例
* @return
*/
public static BeanFactory getInstance(){
return beanFactroy;
}
//其他的方法
//......
}同时推荐你们了解一些设计模式,这个就是单例singleton的典型用法。
= = 是定期更新更新文件时间来保证? 这个方法偶总觉的是在绕路……
;)~不过有人放出参考也素万分感谢,恩,考虑我的东西要跑不同平台jni的路就不走了 = = 我懒
上面的这个singleton用法,稍微有一点点浪费。呵呵
tomuno(tomuno) 你还没懂我的问题吧,还是问整个程序的入口?自然是main()罗
public static LockThread getInstance() {
return locker;
} public void killLock() {
stop = true;
} public void run() {
while (!stop) {
try {
Date de = new Date();
long timeNow = de.getTime();
FileOutputStream out = new FileOutputStream(FileNameManager.getFullPath(FileNameManager.FNM_LOCK_FILE));
String lockInfo = timeNow + "";
out.write(lockInfo.getBytes());
out.close();
Thread.sleep(5000);
} catch (Exception e) {
}
}
if (stop) {
File lockFile = new File(FileNameManager.getFullPath(FileNameManager.FNM_LOCK_FILE));
lockFile.delete();
}
} private boolean stop = false;
private static LockThread locker = new LockThread();
}
欢迎多多提建议
private static BeanFactory beanFactroy = null;
private BeanFactory(){
}
public static BeanFactory getInstance(){
if (beanFactroy==null)
beanFactroy=new BeanFactory();
return beanFactroy;
} }没有抬杠的意思,呵呵,所以小小的建议
bcbboy
不能说takecare的方法浪费,
Singleton模式有三种实现方法,takecare的方法是lazy的那种,但是也是最常用的那种,因为你这种方法考虑到多线程访问的话,若两个thread同时getInstance()有可能产生多于一个instance,这样就达不到single的目的了,所以你的方法应该还要synchronized而且是只对getInstance的一部分synchronized,这样的话,代价不也上去了吗?
程序运行时打开一个端口进行监听,如成功则运行否则表示此程序已运行.这个方法实现也不复杂,只是要求对SOCKET监听有一定了解.
反正只要保证同时只有一个调用者能够进入到run就行了。
这个线程充其量也就是个看锁员 被锁的是主线程 这里没写出来 太大了
wplian(flrQ) 明白我的意思了vc里我也依稀记得比较容易处理,毕竟它可以直接去取系统的进程句柄从而得知目的进程是否在运行(好象是这样,好久没碰vc了,说错大家bs下就算了 呵呵)
但java就没那么容易了,java可没有这个路子走的