猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
如何设置线程运行的时间
前辈们好!问题如下:
有一个线程,给他规定执行用时最大时间,如果他执行的时间超过最大时间,就结束这个线程,代码该怎么写呢, 前辈们给指导指导,谢谢啦
慕尼黑的夜晚无繁华
浏览 1634
回答 2
2回答
慕桂英546537
Thread thread = new Thread(new Runnable() { @Override public void run() { try { System.out.println(Thread.currentThread()); Thread.sleep(6000); } catch (InterruptedException e) { e.printStackTrace(); } } }); System.out.println(Thread.currentThread()); thread.start(); TimeUnit.SECONDS.timedJoin(thread, 3); if (thread.isAlive()) { thread.interrupt(); throw new TimeoutException("Thread did not finish within timeout"); } TimeUnit 有一个方法 timedJoin,如果线程未在指定时间运行完,或者指定时间内运行结束,代码会向下走,这时使用 isAlive 判断是否执行结束。
0
0
0
侃侃尔雅
上面的代码有些问题,并没能真正结束线程。稍微改下就可以了 Thread thread = new Thread(new Runnable() { @Override public void run() { try { System.out.println(Thread.currentThread()); Thread.sleep(6000); } catch (InterruptedException e) { e.printStackTrace(); **return;** } System.out.println("任务继续执行.........."); } }); System.out.println(Thread.currentThread()); thread.start(); TimeUnit.SECONDS.timedJoin(thread, 3); if (thread.isAlive()) { thread.interrupt(); throw new TimeoutException("Thread did not finish within timeout"); } 如果,不加return,将会输出"任务继续执行.........."
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续