让一个东西在main方法之后执行

让一段程序在main方法之前之前我们都知道很简单,用static静态块就可以

但是要让一个东西在main结束之后执行(不考虑新开启一个线程的情况。。。)

这里要从java的回收机制出发,因为如果只有main这一个线程的话,在main结束之后就意味着整个程序结束了

那就得考虑让程序结束之后还可以干点事

或者是说成是 我的程序“结束”之后,给java虚拟机留点事情

实现方案

自己写一个类Demo 复写一下finalize()方法,在里面打印一条消息 (这个方法在对象被java回收机制 回收的时候会被调用)

在main函数中创建n多个这个对象(估计每个机器不一样,我这里是1000000+)

然后在main函数的最后打印一条提示消息

如果在main函数最后的提示消息打印出来之后,还有对象回收的提示的话,那说明达到了我们的效果

public class Test {

	public static void main(String[] args){
		// TODO Auto-generated method stub
		Integer i=new Integer(0);
		for(i=0;i<1000000;i++)
		{

			Demo d=new Demo();
		}
		System.out.println("main");
	}
}
class Demo {

	@Override
	protected void finalize() throws Throwable {
		// TODO Auto-generated method stub
		super.finalize();
		System.out.println("finalize");
	}
}

输出结果,正和我意

...
finalize
finalize
finalize
main
finalize
finalize
finalize
finalize
finalize
...
时间: 2024-11-04 01:16:53

让一个东西在main方法之后执行的相关文章

Main方法的执行过程(转)

要运行一个 main 方法 , 首先要知道 main 方法所在的 Class, 在命令行中指定这个 Class 名 Class Lava{ Private int speed = 4; Void flow(){ } } Class Volcano{ Public static void main(String[]  args){ Lava lava = new Lava(); lava.flow(); } } Java Lava 1.        当虚拟机接受到这样的命令后 , 就从 clas

JAVA线程池原理源码解析—为什么启动一个线程池,提交一个任务后,Main方法不会退出?

起因 public static void main(String[] args) { ExecutorService service = Executors.newFixedThreadPool(10); service.submit(() -> System.out.println("Hello ")); System.out.println("World"); } 呵呵,执行结果谁都知道,显而易见结论线程池的创建的时候,第一次submit操作会创建Wor

jmeter 的java请求代码在main方法里面执行

1.新建一个java请求执行加法类 public class TestDemo { public int Tdemo(int a,int b){ int sum = 0; sum = a+b; return sum; } } 2.再建一个jmeter的java请求类 import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

JAVA的main方法

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方 法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: public class HelloWorld

Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: 1 /** 2 * Java中的main()方法

main方法

在Java中,main()方法是Java应用程序的入口方法:程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等.main()方法的声明为:public static void main(String args[]).必须这么定义,这是Java的规范.为什么要这么定义,和JVM的运行有关系.当一个类中有main()方法,执行命令"java

Main方法解析(有参考,为菜鸟详细解释嘛是Main方法)

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方 法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: public class HelloWorld

java入门学习:Java中的main()方法详解

本文来源:http://www.zretc.com/technologyDetail/445.html 在Java入门学习中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这

Java main方法解释

java--main()方法 在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: /** * Jav