`

Java只启动一个实例的方法

阅读更多
任何一个计算机系统,其端口都是独占的,这就是说:如果一个程序占有了某个端口,在它没有退出前其他程序是不能在占有该端口。很多这样的例子例如:不能用一个端口起两个tomcat。所有我们也可以利用这点开发一个独占的窗体,只有该窗体不销毁就不能启动第二个这样的窗体。

基本上不需要担心绑定端口会给系统造成什么负担或者影响,windows默认有65535个端口,只要你绑定一个比较大一些端口(20000以上),给系统造成冲突的可能性几乎没有,即便有了换一个即可。

对于运行未安装服务包的 Windows XP 或 Windows Server 2003 的计算机,下面给出了不同的端口范围:
众所周知的端口范围(由 IANA 保留):0 到 1023
临时端口范围(对于通配绑定):1025 到 MaxUserPort 注册表设置值
可用作特定端口(对于特定绑定):从 0 到 65535 的任何未封锁端口
保留端口的可用范围:1025 到 MaxUserPort 以及 49152 到 65535
封锁端口的可用范围:MaxUserPort + 1 到 49151(除非 MaxUserPort 的值设置为 49152 或更高,这种情况下没有可封锁端口范围)

一般用到的是1到65535,其中0不使用 
一般的应用程序使用1024到4999用来通讯 
5000以后的用来用户自定义端口

程序如下:
import java.io.IOException;
import java.net.ServerSocket;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class OnlyOneFrame extends JFrame{
	private OnlyOneFrame(){
		ServerSocket server;
		try {
			server = new ServerSocket(22333);
			server.isBound();
		} catch (IOException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(this, "您已经启动了一个窗体");
			// 如果端口已经绑定,系统退出,释放内存。
			System.exit(0);
		}
		
		setTitle("Your title");
		setSize(805, 410);
		setResizable(false);
		setLocationRelativeTo(getOwner());
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new OnlyOneFrame();
	}

}

分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    在jboss同时启动两个实例

    接下来的目标是在同一台机器上再启动一个独立的实例。 #### 3. 修改配置文件 为了能够同时启动两个实例,我们需要对以下配置文件进行修改: - **server.xml**:位于`jboss-4.0.2\server\default\deploy\jbossweb-...

    java 多线程并发实例

    2. 实现Runnable接口:创建一个实现了Runnable接口的类,并实现run()方法,然后将这个Runnable对象作为参数传递给Thread类的构造函数,创建Thread实例并启动。这种方式更灵活,因为Java不支持多重继承,但可以实现多...

    工厂方法模式java实例demo

    1. **定义抽象产品**:例如,有一个`Vehicle`接口,它包含启动、停止等方法。 2. **实现具体产品**:可能有`Car`和`Bike`两个类,它们分别实现了`Vehicle`接口。 3. **定义抽象工厂**:创建一个`VehicleFactory`接口...

    java实现体温单实例-eclipse-java工程

    在Java编程环境中,Eclipse是一个广泛使用的集成开发环境(IDE),尤其适合于Java应用程序的...通过学习这个实例,开发者不仅可以掌握Java编程的基本技能,还能了解到如何在Eclipse中组织和运行一个完整的Java项目。

    java单例模式实例

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...

    java调用动态库实例

    例如,如果DLL有一个名为`addNumbers`的函数,我们创建一个`AddNumbers`接口,声明`addNumbers`方法,然后通过`NativeLibrary.getInstance()`加载库,最后通过接口实例调用方法。 - web项目中的servlet调用:在Web...

    Java启动、暂停AWS RDS实例或修改实例类型的demo

    在AWS中,可以使用AWS SDK for Java来调用相应的API,例如`AmazonRDSClientBuilder`创建一个客户端对象,然后调用`startDBInstance`和`stopDBInstance`方法来启动或暂停实例。执行这些操作前,你需要确保已经正确...

    JAVA实现ElasticSearch的简单实例

    `client.search()`方法会返回一个`SearchResponse`,从中解析出结果。 7. **Java REST客户端的使用**:`RestHighLevelClient`是Elasticsearch提供的高级Java客户端,提供了丰富的API用于操作索引、文档、搜索等。...

    Java数据库编程实例

    安装Jbuilder集成开发环境时,首先使用WINZIP将压缩的Jbuilder.zip文件解压缩到一个临时目录 中,然后执行临时目录中的setup.exe可执行文件,按照JBuilder安装向导完成JBuilder开发环境的 安装。在启动JBuilder开发...

    java 基础 类对象创建实例化过程 实例解析

    * 执行过程为:启动类是否为继承关系树中的一个,如果是则先执行启动类的所有父类的静态语句块;然后执行启动类的静态语句块static{} -> * 执行启动类的main函数 -> 创建对象的继承树从高到底的类层次中的静态块...

    Java Socket实例(服务器多线程)

    在这个实例中,我们将探讨如何在Java中实现一个多线程的Socket服务器,以便同时处理多个客户端的请求。多线程是关键,因为它允许服务器并行处理多个连接,提高了系统的效率和响应速度。 首先,我们需要了解Socket的...

    15个经典的java课程设计实例

    在"最好的电影播放软件.bat"可能是一个批处理文件,它可能是用来启动一个Java应用程序,例如一个简单的电影播放器,涉及到了文件操作和系统命令的使用。而"15geJavakechengsjsl"可能是这15个课程设计实例的源代码...

    selenium自动化测试 java实例

    例如,`FirefoxDriver()` 创建一个Firefox浏览器实例,`ChromeDriver()` 创建Chrome浏览器实例。 2. **WebElement**: WebDriver API中的`WebElement`接口代表了网页中的单个元素。我们可以通过`findElement()`或`...

    JAVA多线程的实例

    当你有一个实现了`Runnable`接口的类时,你可以创建一个`Thread`对象并传入你的`Runnable`实例,如: ```java Runnable task = new MyRunnable(); Thread thread = new Thread(task); thread.start(); ``` 这里,`...

    Java建立一个单线程的实例.rar

    在`main`方法中,我们创建了一个`Thread`对象,传入`MyRunnable`实例,并调用`start()`启动线程。 4. **线程同步**: 当多个线程访问共享资源时,可能导致数据不一致,这时需要进行线程同步。Java提供了以下同步...

    再发一些Java对象、Java类学习实例.rar

    例如,如果你创建一个"汽车"类,这个类的对象可能有"颜色"、"速度"这样的属性,以及"启动"、"加速"这样的行为。对象是程序中实际进行操作的单位。 其次,Java类是对象的蓝图或模板。它定义了一组特性和行为,这些...

    java 写得 一个 钟表 的 实例

    本Java钟表实例是一个很好的实践案例,它综合运用了Java的基本语法、Swing GUI框架、多线程机制、日期时间处理以及数学计算等知识点。对于初学者来说,通过理解并动手实现这个项目,可以加深对Java编程的理解,同时...

    java多线程编程实例

    这是因为`start()`方法会创建一个新的线程,并在该线程中调用`run()`方法。如果直接调用`run()`方法,则会在当前线程中执行,而不会创建新的线程。 - `start()`方法内部实际上调用了`native`方法`start0()`,并且会...

Global site tag (gtag.js) - Google Analytics