请教如何用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调用系统命令 JAVA取文件问题。附代码,请高手指点!!!!!!!!!!!!!!!!!!!!!!!!!! 关于 synchronized 的疑问 解析class 一个比较简单的问题!~(关于线程) ■□■□■ 不使用jb,用jdk怎么能把程序编译成exe????? 为什么达不到搜索的效果? SWING做的界面,怎样一次性改变所有同一类型的组件的属性? 关于模拟微信群聊抢红包,有一些疑问 一段代码目的是打印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)