请教如何用java实现所谓的“只运行一个实例” 很多软件,只能打开一次,就像金山词霸一样,在《金山词霸》已经运行了的情况下,再次点击《金山词霸》的图标,那么它不会再运行另外一个《金山词霸》,而是将已有的《金山词霸》给激活,始终只能运行一个《金山词霸》的实例。 我想请教java如何具体实现这样的功能,麻烦各位大侠详细指教下,小弟初学java。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class A{private static A _instance = null;public synchronized static A getInstance() { if (_instance == null) { _instance = new A(); } return _instance; }}使用A的对象时不用new,用A.getInstance(); 楼上不对,这个是进程的问题,而不是线程,可以用绑定端口,FileLock对某个文件进行加锁,或者jni(windows的FindWindow)来检查是不是已经启动。好像1.4的Pref也可以(通过写入注册表某项值,这个我没有试过)。 这么写就可以了:import java.net.*;public class InstanceControl extends Thread { public void run() { try{ Socket client = new Socket("127.0.0.1", 22222);//创建socket,连接22222端口 System.exit(0); //连接成功,说明有实例存在,则退出 }catch (Exception e){ } try{ ServerSocket server = new ServerSocket(22222);//创建socket,连接22222端口 while (true) { server.accept(); //接受连接请求 } }catch (Exception e) { e.printStackTrace(); } }}import javax.swing.*;public class ProgramMain{ public static void main(String argv[]) { InstanceControl ic = new InstanceControl(); ic.start(); JFrame frame = new JFrame("只能运行一个"); frame.setVisible(true); }}上面只是个例子,如果真是用JFrame,记得在窗口退出事件中写System.exit(0) java可以利用USB口输出信息吗 jzkit2 Z3950 服务器配置(高分求助,在上面开了贴有高分) jdbc update的问题 实现可视化的表(如ROSE中的类图效果) 很棘手!关于基于java的ipworks注册的问题。谢谢赐教! short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 帮新人 找找错 感谢你 求救:如何在JTable中动态添加一行? 如何在applet中捕获鼠标右键的单击和左键的双击事件 增强for循环问题 一段代码目的是打印2点成一条直线,出了点问题 我这样写正则有问题吗?
private static A _instance = null;
public synchronized static A getInstance()
{
if (_instance == null)
{
_instance = new A();
}
return _instance;
}
}
使用A的对象时不用new,用A.getInstance();
可以用绑定端口,FileLock对某个文件进行加锁,或者jni(windows的FindWindow)来检查是不是已经启动。
好像1.4的Pref也可以(通过写入注册表某项值,这个我没有试过)。
public class InstanceControl extends Thread {
public void run() {
try{
Socket client = new Socket("127.0.0.1", 22222);//创建socket,连接22222端口
System.exit(0); //连接成功,说明有实例存在,则退出
}catch (Exception e){ } try{
ServerSocket server = new ServerSocket(22222);//创建socket,连接22222端口
while (true)
{
server.accept(); //接受连接请求
}
}catch (Exception e)
{
e.printStackTrace();
}
}
}import javax.swing.*;public class ProgramMain{
public static void main(String argv[])
{
InstanceControl ic = new InstanceControl();
ic.start();
JFrame frame = new JFrame("只能运行一个");
frame.setVisible(true);
}
}上面只是个例子,如果真是用JFrame,记得在窗口退出事件中写System.exit(0)