public static void isInstanceRunning() {
RandomAccessFile f = null;
FileChannel fc = null;
FileLock fl = null;
try {
File temp = new File("D:\lock.txt");
File tempFolder = temp.getParentFile();
if(tempFolder==null||!tempFolder.exists())
tempFolder.mkdir();
if(temp==null||!temp.exists())
temp.createNewFile();
f = new RandomAccessFile("D:\lock.txt", "rwd");
fc = f.getChannel();
fl = fc.tryLock();
if(!fl.isValid()){
System.out.println("another instance is already running.");
System.exit(1);
}
} catch (Exception e) {
//e.printStackTrace();
System.out.println("another instance is already running.");
System.exit(1);
}
}
把isInstanceRunning() 方法加入main方法的头一行,这样就可以阻止多进程了.
分享到:
相关推荐
1. 文件锁定:创建一个临时文件,启动时尝试获取文件锁。如果获取失败,说明已有进程在运行,新进程则退出。 2. 注册表检查:在Windows系统中,可以读取或写入特定的注册表键,来标记进程的存在。 3. 网络端口占用...
在Java编程语言中,文件锁是一种用于控制对...总的来说,理解并熟练使用Java中的文件锁对于构建高效且可靠的文件操作程序至关重要。合理利用文件锁,可以确保在并发环境下数据的一致性和完整性,避免不必要的数据冲突。
顽固文件可能因进程占用、权限问题或被锁定而无法删除,程序可能采用强制结束相关进程、提升权限或解锁后再删除的策略。 4. **文件夹操作**:除了单个文件,程序也可能支持整目录的复制和删除。这涉及递归遍历目录...
Java环境下,由于Java程序运行在JVM上,不能像C语言那样直接创建进程,因此实现守护进程需要特定的策略。 ### 一、简介 Java中的双守护进程方案旨在解决服务器程序异常退出后无人值守的问题。通常,一个守护进程会...
总之,Java多线程编程是提高程序效率和响应性的关键技能,通过学习和实践,你可以掌握如何在Java环境中有效地管理和控制并发执行的代码。这个入门程序是很好的起点,它将引导你逐步理解Java多线程的核心概念和实践...
为了解决多进程间的互斥写问题,我们需要借助于SQLite的内部锁定机制或者操作系统级别的文件锁定。 SQLite提供了一种称为"事务"的机制,用于保证数据的一致性。事务允许将一组数据库操作视为一个单元,如果所有操作...
首先,Java不直接支持原生的多进程编程,因为Java虚拟机(JVM)是单进程的。然而,Java可以通过与其他语言(如C++)的互操作,或者利用操作系统级别的进程间通信(IPC)机制来实现多进程通信。其中一种常见的方式是...
【Java两个线程同时写一个文件】在Java编程中,多线程环境下处理文件操作时,需要特别注意线程安全和资源同步。当两个线程尝试同时写入同一个文件时,可能会导致数据混乱或者文件损坏。Java提供了多种机制来解决这个...
4. **文件锁定(File Locking)**:NIO提供了文件锁定功能,可以实现对文件的独占访问,避免多个进程同时修改同一文件的问题。 NIO的应用场景广泛,尤其是在高并发、大数据量的网络应用中,比如服务器端的Socket...
每个线程都有自己的堆栈、程序计数器和局部变量,但与分隔的进程不同,线程之间的隔离程度较小,它们共享内存、文件句柄等资源。 - Java语言原生支持线程,是主流编程语言中第一个将线程显式包含在语言本身中的。...
例如,Java中可以使用Singleton设计模式结合进程ID检查,C#里有Mutex类,Python中可以利用文件锁或进程间通信机制。 6. **挑战与解决方案**: - **多用户环境**:在多用户系统中,每个用户可能需要独立运行应用...
如果文件已被锁定,说明该程序已经在运行,新的实例则退出。这种方法需要处理好文件锁的释放,避免进程异常退出导致文件锁无法释放,从而影响其他实例的运行。 3. **命名管道**或**套接字**:利用Windows的命名管道...
通常,在编译和运行Java程序时,我们需要设置CLASSPATH来包含我们使用的库文件路径。 ##### Unicode问题 Unicode是一种国际编码标准,用于解决多种语言文字的编码问题。在Java中,所有的字符都是以Unicode形式存储...
- **进程**:是指计算机正在执行的一个程序实例,比如一个`.class`文件或`.exe`文件。 - **线程**:是进程中的一个执行流,一个进程中可以包含一个或多个线程,每个线程都是一条执行路径。 **进程与线程的区别** -...
### Java多线程编程总结 ...通过以上总结,我们可以看出Java5之后对多线程的支持有了极大的提升,引入了一系列的新特性,使得开发者能够更加高效地编写多线程程序。这些特性和概念对于理解Java多线程编程至关重要。
Java程序可以通过将任务分配给不同的线程来充分利用多核处理器的能力。 **5.3 异步处理** 多线程允许程序在等待某些操作完成(如I/O操作或网络请求)的同时继续执行其他任务。这种异步处理能力对于提高程序的整体...