java怎么实现单实例运行

java怎么实现单实例运行,第1张

Java实现单例的5种方式

1. 什么是单例模式

单例模式指的是在应用整个生命周期内只能存在一个实例。单例模式是一种被广泛使用的设计模式。他有很多好处,能够避免实例对象的重复创建,减少创建实例的系统开销,节省内存。

2. 单例模式和静态类的区别

首先理解一下什么是静态类,静态类就是一个类里面都是静态方法和静态field,构造器被private修饰,因此不能被实例化。Math类就是一个静态类。

知道了什么是静态类后,来说一下他们两者之间的区别:

1)首先单例模式会提供给你一个全局唯一的对象,静态类只是提供给你很多静态方法,这些方法不用创建对象,通过类就可以直接调用;

2)单例模式的灵活性更高,方法可以被override,因为静态类都是静态方法,所以不能被override;

3)如果是一个非常重的对象,单例模式可以懒加载,静态类就无法做到;

那么时候时候应该用静态类,什么时候应该用单例模式呢?首先如果你只是想使用一些工具方法,那么最好用静态类,静态类比单例类更快,因为静态的绑定是在编译期进行的。如果你要维护状态信息,或者访问资源时,应该选用单例模式。还可以这样说,当你需要面向对象的能力时(比如继承、多态)时,选用单例类,当你仅仅是提供一些方法时选用静态类。

1,在program.cs文件中添加函数如下:

public static System.Diagnostics.Process RunningInstance()

{

System.Diagnostics.Process current = System.Diagnostics.Process.GetCurrentProcess()

System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses()

foreach (System.Diagnostics.Process process in processes) //查找相同名称的进程

{

if (process.Id != current.Id) //忽略当前进程

{ //确认相同进程的程序运行位置是否一样.

if (System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", @"\") == current.MainModule.FileName)

{ //Return the other process instance.

return process

}

}

} //No other instance was found, return null.

return null

}

2,把Main ()函数改为如下代码:

static void Main()

{

if(RunningInstance()==null)

{

Application.EnableVisualStyles()

Application.SetCompatibleTextRenderingDefault(false)

Application.Run(new Form1())

}

else

{

MessageBox.Show("已经运行了一个实例了。")

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12025879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存