A. java 中怎么判断某一线程是否运行
可以调用 Thread.isAlive() 判断, 当然也可以设置一个标记, 在那个线程结束之前设置标记。
/**
* Tests if this thread is alive. A thread is alive if it has
* been started and has not yet died.
* @return <code>true</code> if this thread is alive;
* <code>false</code> otherwise.
*/
Thread.isAlive()
B. Java如何判断线程池所有任务是否执行完毕
给你一个例子参考下
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
publicclassTest{
publicstaticvoidmain(Stringargs[])throwsInterruptedException{
ExecutorServiceexe=Executors.newFixedThreadPool(50);
for(inti=1;i<=5;i++){
exe.execute(newSubThread(i));
}
exe.shutdown();
while(true){
if(exe.isTerminated()){
System.out.println("结束了!");
break;
}
Thread.sleep(200);
}
}
}
上面是主线程的代码,创建了一个能同时执行2个线程的线程池,并投入5个线程,当5个线程都执行完毕后打印---“结束了!”字符串。
exe.shutdown();该方法在加入线程队列的线程执行完之前不会执行。
exe.isTerminated();当shutdown()或者shutdownNow()执行了之后才会执行,并返回true。
在上面的代码中必须有exe.isTerminated()的判断,否则在投入5个线程到线程池后会直接打印:“结束了”。不能达到我们想要的效果。
通过while(true)循环判断exe.isTerminated()重生之大文豪的值,为了防止过多的判断浪费资源,可设置线程睡眠Thread.sleep(200);
正是由于这个睡眠,所以当所有线程池中的线程都执行完后,有可能延迟200ms才执行"结束了"语句。这个参数越小延迟越小,结果越准确。
C. java判断线程是否存活有几种方法
void shutdown()
启动一次顺序关闭,执行以前提交的任务,但不接受新任务。如果已经关闭,则调用没有其他作用。
抛出:
SecurityException - 如果安全管理器存在并且关闭,此 ExecutorService 可能操作某些不允许调用者修改的线程(因为它没有保持RuntimePermission("modifyThread")),或者安全管理器的 checkAccess 方法拒绝访问。
isTerminated
boolean isTerminated()
如果关闭后所有任务都已完成,则返回 true。注意,除非首先调用 shutdown 或 shutdownNow,否则 isTerminated 永不为 true。
返回:
如果关闭后所有任务都已完成,则返回 true
D. JAVA 如何检查线程是否执行
可以使用类变量判断 。示例如下:
classA{
staticbooleanaStop=false;
staticvoidtest(){
newAThread().start();
while(!aStop){
}
System.out.println("AThreadstoped.");
}
classAThreadextendsThread{
publicvoidrun(){
/////////////////////////
aStop=true;
}
}
}
E. java 判断是不是同一个线程
每个线程都会由系统分配唯一的线程标识(线程id),一般是调用.get什么来获取id,具体方法查api文档,这种拿来主义的习惯不好,这个查一下api就知道,一两分钟的事
F. 急求!如何判断java 线程相等,用equals还是==,举个例子
用
equals
,判断线程是否相等,本质上是判断两个
Thread
的变量是否相等,而在Java中,每一个线程都只有唯一一个Thread
的对象,所以需要使用
equals。
G. java 如何判断一个线程结束
线程结束时等待也就结束了
------解决方案--------------------------------------------------------
waitforsingleobject当然可以。
或者设一全局变量,线程结束就将其置为某值。在别处读取该值,就可以判断线程是否结束了。
------解决方案--------------------------------------------------------
wait_object_0
表示这个线程已经退出了,wait_timeout是这个线程在此函数返回时候还没退出,但是设置的等待时间已经到了,wait_abandoned是所等待的对象是mutex而非thread,
H. java怎么判断一个线程是否在运行状态
不建议
强制关闭
有时候强制关闭会抛出异常
或者根本关闭不了
你在线程中设置个boolean
变量
flag
加个判断
你想关闭的时候控制一下
当flag==false的时候
就跳出线程
2楼的
如果线程不阻塞,你调用interrup方法根本不起作用
只有阻塞时才起作用