⑴ java线程池shutdown和shutdownNow的区别
如图,API 中有解释,shutdown 允许之前已经提交但未执行或未完成的任务继续完成它,而 shutdownNow 阻止已经提交(但尚未运行的)的任务运行并且尝试停止正在运行的任务。
一句话,shutdown 优雅而不究既往,而shutdownNow 就像停电一般消灭所有既成事实。
⑵ JAVA语句怎么实现让电脑定时开机和定时关机
要实现电脑的定时开机功能,首先应确定电脑使用的电源是ATX电源,而且主板支持时钟唤醒功能,而且操作系统是Windows 98或以上版本的操作系统,然后在开机时进入BIOS设置,选择“Power Management Setup”项后,将“Resume By Alarm”项设为打开状态,即设置为“Enabled”。然后在时间设定中的“Data”项中选0,在“Time”中设定定时开机的时间,设置好后按【F10】键保存退出,即可实现电脑定时开机功能。需注意的是不要将电脑的电源插头拨了。
定时关机:首先在“开始”菜单点击“运行”,输入“at xx:xx shoutdown -s” 可以实现定时关机,xx:xx指的是具体关机时间。还可以输入“shoutdown.exe -s -t xxxx”。xxxx指的是欲多久后关机的秒数。如果运行程序后想取消,则输入“shutdown -a”即可(注意以上输入时不包括引号)。本人在上网的时候运用了此招,就再也没发生上网失控的现象了。 如果要在Windows 2000下运行的话,只需将Windows XP c:\windows\system32目录下的“shutdown.exe”文件拷贝到Windows 2000下的c:\winnt\system32目录下即可。
⑶ java程序通过命令停止
tasklist命令找到该程序的进程,taskkill杀掉该进程。
tomcat的启动、结束bat都是调用org.apache.catalina.startup.Bootstrap这个类实现的,startup.bat最终会执行Bootstrap.java里的
publicvoidstart()throwsException{
if(catalinaDaemon==null)init();
Methodmethod=catalinaDaemon.getClass().getMethod("start",(Class[])null);
method.invoke(catalinaDaemon,(Object[])null);
}
shutdown.bat最终会执行Bootstrap里的
publicvoidstopServer()throwsException{
Methodmethod=catalinaDaemon.getClass().getMethod("stopServer",(Class[])null);
method.invoke(catalinaDaemon,(Object[])null);
}
你也可以这样写一个类来控制程序的启动、终止,bat就调用对应的方法。
⑷ java怎么关闭创造
执行shutdown就可以关闭。Java语言是一种计算机语言,尤用于创建网站Java是一门面向对象的编程语言。根据Java官网资料显示,java执行shutdown就可以关闭。吸收了优点,还摒弃了概念,给人们的使用带来便捷,更好的服务人们。
⑸ Java如何判断线程池中所有任务执行完毕
Java 如何判断线程池所有任务是否执行完
shutdown
void shutdown()
启动一次顺序关闭,执行以前提交的任务,但不接受新任务。如果已经关闭,则调用没有其他作用。
抛出:
SecurityException - 如果安全管理器存在并且关闭,此 ExecutorService 可能操作某些不允许调用者修改的线程(因为它没有保持RuntimePermission("modifyThread")),或者安全管理器的 checkAccess 方法拒绝访问。
isTerminated
boolean isTerminated()
如果关闭后所有任务都已完成,则返回 true。注意,除非首先调用 shutdown 或 shutdownNow,否则 isTerminated 永不为 true。
返回:
如果关闭后所有任务都已完成,则返回 true
/**
[java] view plain
* 采用线程池开启多个子线程,主线程等待所有的子线程执行完毕
*/
public static void moreThread() {
try {
int threadNum = 0;
for (int i = 0; i < 10; i++) {
threadNum++;
final int currentThreadNum = threadNum;
exe.execute(new Runnable() {
@Override
public void run() {
try {
System.out.println("子线程[" + currentThreadNum + "]开启");
Thread.sleep(1000*10);
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("子线程[" + currentThreadNum + "]结束");
}
}
});
}
System.out.println("已经开启所有的子线程");
exe.shutdown();
System.out.println("shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。");
while(true){
if(exe.isTerminated()){
System.out.println("所有的子线程都结束了!");
break;
}
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
System.out.println("主线程结束");
}
}
[java] view plain
子线程[1]开启
子线程[6]开启
子线程[2]开启
子线程[5]开启
子线程[9]开启
已经开启所有的子线程
子线程[3]开启
子线程[7]开启
子线程[10]开启
shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。
子线程[4]开启
子线程[8]开启
子线程[6]结束
子线程[3]结束
子线程[7]结束
子线程[2]结束
子线程[1]结束
子线程[5]结束
子线程[9]结束
子线程[4]结束
子线程[10]结束
子线程[8]结束
所有的子线程都结束了!
主线程结束
⑹ Java里ExecutorService里shutdown()是什么意思
shutdown,执行后不再接收新任务,如果里面有任务,就执行完
shutdownNow,执行后不再接受新任务,如果有等待任务,移出队列;有正在执行的,尝试停止之
==========================
通常shutdown之后调用awaitTermination,作用是:后者会阻塞当前线程,等待剩余任务执行完,然后继续往下执行。如果不适用await,那么shutdown之后,很可能导致剩余任务得不到执行(整个程序退出),或是执行出现异常(某些资源被释放之类)。
==========================
例子,网上来的,懒得动手写:
================
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/*
* Callable 和 Future接口
* Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
* Callable和Runnable有几点不同:
* (1)Callable规定的方法是call(),而Runnable规定的方法是run().
* (2)Callable的任务执行后可返回值(任意类型),而Runnable的任务是不能返回值的。
* (3)call()方法可抛出异常,而run()方法是不能抛出异常的。
* (4)运行Callable任务可拿到一个Future对象,
* Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。
* 通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。
*/
public class CallableAndFuture {
/** *//**
* 自定义一个任务类,实现Callable接口
*/
public static class MyCallableClass implements Callable{
// 标志位
private int flag = 0;
public MyCallableClass(int flag){
this.flag = flag;
}
public String call() throws Exception{
if (this.flag == 0){
// 如果flag的值为0,则立即返回
return "flag = 0";
}
if (this.flag == 1){
// 如果flag的值为1,做一个无限循环
try {
while (true) {
System.out.println("looping.");
Thread.sleep(2000);
}
} catch (InterruptedException e) {
System.out.println("Interrupted");
}
return "false";
} else {
// falg不为0或者1,则抛出异常
throw new Exception("Bad flag value!");
}
}
}
public static void main(String[] args) {
// 定义3个Callable类型的任务
MyCallableClass task1 = new MyCallableClass(0);
MyCallableClass task2 = new MyCallableClass(1);
MyCallableClass task3 = new MyCallableClass(2);
// 创建一个执行任务的服务
ExecutorService es = Executors.newFixedThreadPool(3);
try {
// 提交并执行任务,任务启动时返回了一个 Future对象,
// 如果想得到任务执行的结果或者是异常可对这个Future对象进行操作
Future future1 = es.submit(task1);
// 获得第一个任务的结果,如果调用get方法,当前线程会等待任务执行完毕后才往下执行
System.out.println("task1: " + future1.get());
Future future2 = es.submit(task2);
// 等待5秒后,再停止第二个任务。因为第二个任务进行的是无限循环
Thread.sleep(5000);
System.out.println("task2 cancel: " + future2.cancel(true));
// 获取第三个任务的输出,因为执行第三个任务会引起异常
// 所以下面的语句将引起异常的抛出
Future future3 = es.submit(task3);
System.out.println("task3: " + future3.get());
} catch (Exception e){
System.out.println(e.toString());
}
// 停止任务执行服务
es.shutdownNow();
}
}
⑺ 用java代码打开指定路径下重启服务器的bat文件,bat文件启动后显示shutdown不是内部或外部命令,也不是
只需要Runtime.getRuntime().exec("shutdown -r -f")这个,你试试
⑻ java语言的自动关机的代码
public class RuntimeTest {
public static void main(String[] args)
{
Runtime rt=Runtime.getRuntime();
try
{
rt.exec("shutdown.exe -s -t 40");
/*40的单位为秒,可以改成你想要的任何数字。
如果是想定时关机,可用这句:rt.exec("at 19:00 shutdown.exe -s");19:00可以换成你想要的时间*/
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
⑼ java中一个线程池调用shudown()方法,就不再接受任务,如何实现线程复用呢,有没有永不shutdown的全局池
中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。你最好还是牢记以下的告诫。首先,忘掉Thread.stop方法。虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,这意味着,在未来的JAVA版本中,它将不复存在。中断线程最好的,最受推荐的方式是,使用共享变量(sharedvariable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗余操作期间),然后有秩序地中止任务。具体的示例代码如下:classExampleextendsThread{volatilebooleanstop=false;publicstaticvoidmain(Stringargs[])throwsException{Example2thread=newExample2();System.out.println("Startingthread");thread.start();Thread.sleep(3000);System.out.println("Askingthreadtostop");thread.stop=true;Thread.sleep(3000);System.out.println("Stoppingapplication");//System.exit(0);}publicvoidrun(){while(!stop){System.out.println("Threadisrunning");longtime=System.currentTimeMillis();while((System.currentTimeMillis()-time<1000)&&(!stop)){}}System.out.println("Threadexitingunderrequest");}}
⑽ java实现关机
import java.util.*;
import java.io.*;
class Shutdown
{
public static void main(String[] args)
{
System.out.println("Shutdown in 10s");
try{
Runtime.getRuntime().exec("cmd /c Shutdown -t 10");
}catch(IOException e){}
}
}
上面这个程序实现你所说的定时10秒关机
至于定时开机...你告诉我怎么在关机的状态下执行我的程序,我就把开机的程序给你写出来.