首页 > 后端开发 > 正文

Java 怎么在Main函数中,执行完异步任务后才退出主线程

2024-04-30 15:42:07 | 我爱编程网

今天我爱编程网小编整理了Java 怎么在Main函数中,执行完异步任务后才退出主线程相关内容,希望能帮助到大家,一起来看下吧。

本文目录一览:

Java 怎么在Main函数中,执行完异步任务后才退出主线程

Java 怎么在Main函数中,执行完异步任务后才退出主线程

如题,有时候我们需要在Main函数中写测试代码,并且需要在异步线程中执行任务,任务执行完之后才退出主线程,如何做到的呢,请看如下代码:

[java] view plain copy

public class TestMain {

/**

* @param args

*/

public static void main(String[] args) {

System.out.println("-------work------start---------");

LockHandler mHandler=new LockHandler();

Thread mThread=new Thread(new WorkRunnable(mHandler));

mThread.setDaemon(true);

mThread.start();

mHandler.waitForDebug();

System.out.println("-------work------end---------");

}

public static class WorkRunnable implements Runnable

{我爱编程网

public LockHandler mHandler;

public WorkRunnable(LockHandler mHandler)

{

this.mHandler = mHandler;

}

public void run() {

//TODO

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("-------我在异步线程中睡了五秒---------");

mHandler.notifytForDebug();

}

}

public static class LockHandler

{

public synchronized void waitForDebug()

{

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

public synchronized void notifytForDebug()

{

this.notifyAll();

}

}

}

执行结果:

-------work------start---------

-------我在异步线程中睡了五秒---------

-------work------end---------

只需要重写WorkRunnable类的run()方法.

Java 怎么在Main函数中,执行完异步任务后才退出主线程

java线程执行完后自己结束吗

其实最佳答案的说法是有问题的,如果题主指的结束,是指方法块语句的执行结束的话,热心网友的说法是对的。但是对于线程本身,所有线程(包括主线程)在启动后都被CPU参照

优先级

交替调用,运行的顺序是无法预测的,但最后结束的一定是主线程。

网上有部分说法,展示的代码运行结果,“主线程先于其他线程结束,并不影响其他线程的运行”只有后半部分是对的。因为方法体(不管是自定义线程的run()还是主线程的main())中全部语句的执行完毕不代表所在线程的结束,可以用activeCount()返回当前运行的总线程数来验证这一点。另外,如果将自定义的线程对象设定为守护线程(setDeamon()),也可以很清楚看到即便main()方法中最后一句输出语句执行完毕,控制台仍会根据该自定义线程run()方法体的内容继续输出,这证明主线程还没结束——因为当线程组中只剩下守护线程时,JVM虚拟机会自动退出,如果主线程已经结束,唯一活动的线程在被设置成守护线程的情况下,程序会直接结束运行,不可能继续输出。

Java 怎么在Main函数中,执行完异步任务后才退出主线程

java 如何让一个程序运行一段时间后就停止运行

public static void main(String[] args) {

long begain = System.currentTimeMillis();//开始系统时间

try {

Thread.sleep(100);

} catch (Exception e) {

e.printStackTrace();

}

long CheckTime = System.currentTimeMillis(); //判断时间

while(true){

System.out.println(CheckTime-begain);

try {

Thread.sleep(1000);

} catch (Exception e) {

e.printStackTrace();

}

CheckTime = System.currentTimeMillis();

if((CheckTime-begain)>=(30*1000)){//判断时候到30秒

System.out.println("30秒后结束");

break;

}

}

}

给你的答案希望你能满意

以上就是Java 怎么在Main函数中,执行完异步任务后才退出主线程全部内容,更多相关信息,敬请关注我爱编程网。

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“Java 怎么在Main函数中,执行完异步任务后才退出主线程”相关推荐