关于java中 interrupt,中断线程,我怎么怎样都不能中断
为什么我的interrupt不能中断线程;我是全抄的教程视频上的;视频上就能中断;importjava.util.*;publicclassTestInterrupt{p...
为什么我的interrupt 不能中断 线程;我是全抄的教程视频上的;视频上就能中断;
import java.util.*;
public class TestInterrupt {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
thread.interrupt();
}
}
}
class MyThread extends Thread {
public void run() {
while(true) {
System.out.println("===" + new Date() + "===");
try {
sleep(1000);
} catch (InterruptedException e) {
return;
}
}
}
}
我也试过 把 thread.interrupt(); 放在catch外面也不行
我也试过 用过时的 stop 不行;试过在MyThread 类里声明一个boolean变量放while里
然后在main方法下面赋值 false 也不能中断 ,怎么回事呀。。。 展开
import java.util.*;
public class TestInterrupt {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
thread.interrupt();
}
}
}
class MyThread extends Thread {
public void run() {
while(true) {
System.out.println("===" + new Date() + "===");
try {
sleep(1000);
} catch (InterruptedException e) {
return;
}
}
}
}
我也试过 把 thread.interrupt(); 放在catch外面也不行
我也试过 用过时的 stop 不行;试过在MyThread 类里声明一个boolean变量放while里
然后在main方法下面赋值 false 也不能中断 ,怎么回事呀。。。 展开
展开全部
java线程中interrupt执行之后,并不能阻止线程执行,可以使用变量来控制,如下代码:
package com.qiu.lin.he;
import java.io.IOException;
public class CeShi extends Thread {
volatile boolean stop = false;
public static void main(String[] args) throws IOException,
InterruptedException {
CeShi thread = new CeShi();
System.out.println("Starting thread...");
thread.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Asking thread to stop...");
thread.stop = true;
Thread.sleep(3000);
System.out.println("Stopping application...");
}
@Override
public void run() {
while (!stop) {//当stop变量为false时,则停止
System.out.println("Thread is running...");
long time = System.currentTimeMillis();
while (System.currentTimeMillis() - time < 1000 && !stop) {
}
}
System.out.println("Thread exiting under request...");
}
}
运行结果如下:
展开全部
以下为我的实现代码,可以试下:
import java.util.Date;
public class TestInterrupt {
/**
* @param args
*/
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
int i = 0;
while(i++<=10){ //当i=10时,终止标志设为true
thread.stopThread();
}
}
}
class MyThread extends Thread {
private boolean stopFlag = false ; //设置终止标志为false
public void run() {
while(true) {
System.out.println("===" + new Date() + "===");
try {
sleep(1000);
if(stopFlag){//当终止标志为true时,跳出循环体,线程结束
interrupt(); //当触发interrupt操作时,会
}
} catch(InterruptedException e) {
break;
}
}
}
public void stopThread(){
stopFlag = true;
}
}
import java.util.Date;
public class TestInterrupt {
/**
* @param args
*/
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
int i = 0;
while(i++<=10){ //当i=10时,终止标志设为true
thread.stopThread();
}
}
}
class MyThread extends Thread {
private boolean stopFlag = false ; //设置终止标志为false
public void run() {
while(true) {
System.out.println("===" + new Date() + "===");
try {
sleep(1000);
if(stopFlag){//当终止标志为true时,跳出循环体,线程结束
interrupt(); //当触发interrupt操作时,会
}
} catch(InterruptedException e) {
break;
}
}
}
public void stopThread(){
stopFlag = true;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
catch (InterruptedException e) {
thread.interrupt();
}
应该写成:
catch (InterruptedException e) {
}
thread.interrupt();
thread.interrupt();
}
应该写成:
catch (InterruptedException e) {
}
thread.interrupt();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询