当前位置:编程学习 > JAVA >>

如何停止一个正在运行的线程?

--------------------编程问答-------------------- 除了stop()之外,suspend()、resume()方法也被标示为"deprecated",这些方法如果您要达成相同的功能,您都必须自行实作,在将来新的Java版本中如果这些功能被实现,它也可能是新的接口,而不是使用现有的方法. --------------------编程问答-------------------- 我也不知道,MyThread t=new MyThread(); t.start();这两句之间少了Thread t1=new Thread (t);然后用t1调用start()方法,t1是随意取得变量名.
public void setStop(){
        this.flag=false;
    } 这里面应该调用run()方法,run()添加处理的语句。
//////////////////////////////////////////////////////////////
           public void run(){
        while(flag){
            System.out.println("执行任务中。。。");
        }
       break;
    }
    public void setStop(){
        this.flag=false;
        run();
    }



具体我也不太清楚。你看看我写的有没有帮助。 --------------------编程问答-------------------- 你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄 --------------------编程问答--------------------
引用 3 楼 ghw554557313 的回复:
你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄

stop()这个函数是老版本用的,现在好像不能用了吧。 --------------------编程问答-------------------- 写一个类似Constants.java的类,里面写一个静态成员变量flag,线程的循环体使用这个静态变量来控制是否继续执行,想要停的时候,从页面接收参数stop,把这个变量设置为false就自动退出来了。如果想执行任务中途停的话,就在循环体里面再判断flag,然后break。 --------------------编程问答--------------------
引用 4 楼 u012265257 的回复:
Quote: 引用 3 楼 ghw554557313 的回复:

你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄

stop()这个函数是老版本用的,现在好像不能用了吧。

过期的方法只是不建议用,并不代表jvm不认识它

当然stop也最好不用,自己实现类似的退出线程的方式呗

--------------------编程问答--------------------
引用 6 楼 ghw554557313 的回复:
Quote: 引用 4 楼 u012265257 的回复:

Quote: 引用 3 楼 ghw554557313 的回复:

你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄

stop()这个函数是老版本用的,现在好像不能用了吧。

过期的方法只是不建议用,并不代表jvm不认识它

当然stop也最好不用,自己实现类似的退出线程的方式呗


我是看一个视频教程上的,那上面查看jdk API时,显示的不能用,讲课老师也讲不能用了,嘿嘿。 --------------------编程问答--------------------
引用 5 楼 terry21 的回复:
写一个类似Constants.java的类,里面写一个静态成员变量flag,线程的循环体使用这个静态变量来控制是否继续执行,想要停的时候,从页面接收参数stop,把这个变量设置为false就自动退出来了。如果想执行任务中途停的话,就在循环体里面再判断flag,然后break。


就这样搞 --------------------编程问答--------------------
引用 7 楼 u012265257 的回复:
Quote: 引用 6 楼 ghw554557313 的回复:

Quote: 引用 4 楼 u012265257 的回复:

Quote: 引用 3 楼 ghw554557313 的回复:

你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄

stop()这个函数是老版本用的,现在好像不能用了吧。

过期的方法只是不建议用,并不代表jvm不认识它

当然stop也最好不用,自己实现类似的退出线程的方式呗


我是看一个视频教程上的,那上面查看jdk API时,显示的不能用,讲课老师也讲不能用了,嘿嘿。


是不能用还是不准用啊?
我刚才都试了,能行啊兄弟,我jdk是1.6的 --------------------编程问答-------------------- 你的方法其实是可行的,不过需要一个Map来管理,不然你不知道该停哪个线程。

Map<String,ITask> taskPool = new HashMap<String,ITask>();

ITask task1 = new ITask();
//..

taskPool.put("task-1", task1);

taskPool.get("task-1").stopTask();

--------------------编程问答--------------------
引用 9 楼 ghw554557313 的回复:
Quote: 引用 7 楼 u012265257 的回复:

Quote: 引用 6 楼 ghw554557313 的回复:

Quote: 引用 4 楼 u012265257 的回复:

Quote: 引用 3 楼 ghw554557313 的回复:

你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄

stop()这个函数是老版本用的,现在好像不能用了吧。

过期的方法只是不建议用,并不代表jvm不认识它

当然stop也最好不用,自己实现类似的退出线程的方式呗


我是看一个视频教程上的,那上面查看jdk API时,显示的不能用,讲课老师也讲不能用了,嘿嘿。


是不能用还是不准用啊?
我刚才都试了,能行啊兄弟,我jdk是1.6的

是不建议采用,有安全隐患 --------------------编程问答--------------------
引用 11 楼 u012265257 的回复:
Quote: 引用 9 楼 ghw554557313 的回复:

Quote: 引用 7 楼 u012265257 的回复:

Quote: 引用 6 楼 ghw554557313 的回复:

Quote: 引用 4 楼 u012265257 的回复:

Quote: 引用 3 楼 ghw554557313 的回复:

你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄

stop()这个函数是老版本用的,现在好像不能用了吧。

过期的方法只是不建议用,并不代表jvm不认识它

当然stop也最好不用,自己实现类似的退出线程的方式呗


我是看一个视频教程上的,那上面查看jdk API时,显示的不能用,讲课老师也讲不能用了,嘿嘿。


是不能用还是不准用啊?
我刚才都试了,能行啊兄弟,我jdk是1.6的

是不建议采用,有安全隐患

还有,显示已过时,也是1.6 --------------------编程问答--------------------
引用 12 楼 u012265257 的回复:
Quote: 引用 11 楼 u012265257 的回复:

Quote: 引用 9 楼 ghw554557313 的回复:

Quote: 引用 7 楼 u012265257 的回复:

Quote: 引用 6 楼 ghw554557313 的回复:

Quote: 引用 4 楼 u012265257 的回复:

Quote: 引用 3 楼 ghw554557313 的回复:

你要停止的是当前正在执行的线程
请用Thread.currentThread().stop()弄

stop()这个函数是老版本用的,现在好像不能用了吧。

过期的方法只是不建议用,并不代表jvm不认识它

当然stop也最好不用,自己实现类似的退出线程的方式呗


我是看一个视频教程上的,那上面查看jdk API时,显示的不能用,讲课老师也讲不能用了,嘿嘿。


是不能用还是不准用啊?
我刚才都试了,能行啊兄弟,我jdk是1.6的

是不建议采用,有安全隐患

还有,显示已过时,也是1.6

是啊,不过现在退出线程的方法都用退出标识取代了,那些方法不安全也不优雅 --------------------编程问答-------------------- 用那个Thread实例的interrupt方法呢? --------------------编程问答--------------------

String action=request.getParameter("action");
 MyThread t=new MyThread(); //这个t最好是设置成类静态成员,这样保证每次请求进来的操作的都是相同的线程
if(action.equals("start")){
    t.start();
}else if(action.equals("stop")){
    t.setStop();
}

--------------------编程问答--------------------
引用 5 楼 terry21 的回复:
写一个类似Constants.java的类,里面写一个静态成员变量flag,线程的循环体使用这个静态变量来控制是否继续执行,想要停的时候,从页面接收参数stop,把这个变量设置为false就自动退出来了。如果想执行任务中途停的话,就在循环体里面再判断flag,然后break。




这个可行
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,