对于死循环程序,只能强制退出。
1、控制台程序中的死循环程序,一般按CTRL+C直接中断程序即可。比如下面的死循环控制台程返余竖序。
int main()
{
while (1)
return 0
}
按CTRL+C即可中断程序。在控制台下会显示为^C。
2、图形界面中的死循环程序,可以使用进程管理工具来强制结束,比如windows上的任务管理器。当然控制台死循环程序,也可以使用此种方法结束。以win7为例,在任务栏上右键,在d毁厅出菜单中选择漏大“任务管理器”。
在任务管理器中找到要结束的进程,右键选择“结束进程”即可。
1、首先打开电脑和matlab软件,新建一个m文件,并在m文件里面输入一个死循环的代码,如下所示,for循环里面的inf是表示一个敏败无穷大数的简友意思。
2、然后点击matlab上面的绿色run按钮,可以看到Command Window里面一直处于运行busy状态,也就是死循环的状态。
3、此时退出该死循环的第一个方法:就是把光标定位到Command Window窗口,看到在fx右边一直闪烁的状态。
4、然后同时按下键盘上的ctrl+C组合键,就可以看到for循环停止运行,并跳出一个Warning的蓝色提示语句。
5、还可以在任务管理器桥咐颤的“进程”下面的应用找到“MATLAB(R2015a)”,在其上面点击右键,在d出来的菜单中选择“结束任务(E)”。
6、还可以直接点击matlab主面板右上角的打叉符号,在d出来的对话框中Stop Now and Exit这个按钮即可跳出死循环。
1,线程正常执行完毕,正常结束。颂者也就是让run方法执行完毕,该线程就会正常结束。
2,监视某些条件,结束线程的不间断运行。
然而,常常有些线程是伺服线程。它们需要长时间的运行,只有在外蠢圆部某些条件满足的情况下,才能关闭这些线程。
通常,它们执行在一个while(true)的死循环中。
如:
@Override
publicvoidrun(){
while(true){
someWork()
if(finished){
break
}
try{
Thread.sleep(10000)
}catch(InterruptedExceptione){
/*TODO自动生成catch块
*
*/
e.printStackTrace()
}
}
}
我们可以在while死循环内,每次循环时,察看外部条件,看看是否需要关闭当前线程。如果是,就break,跳出死循环,或者是抛出异常,跳出死循环,结束线程。
3,捕获InterruptedException运行时异常,中断当前线程。
有些执行伺服任务的线程,在while(true)这样的死循环内部,是一个阻塞中的方法。此时,就不能采用第二种方法了。因为,当该方法没有返回时,该线程一直处于阻塞当中,根本无法执行其他语句。
此时,就需要调用该线程的interrupt方法,产生一个InterruptedException运行时异常,是阻塞中的那个方法抛出这个异常,从而让我们有机会结束这个带樱塌线程的执行。
如:
@Override
publicvoidrun(){
while(true){
try{
//getSendMessages是BlockingQueue类。它的take方法将会阻塞!
responseMessage=this.getSendMessages().take()[Page]
}catch(InterruptedExceptione1){
thrownewRuntimeException()
//或者break
}
someWork()
}
一个外部的Thread对象指向这个线程。需要结束这个线程时,只需要调用thread对象的interrupt()方法,就会在
responseMessage=this.getSendMessages().take()
这条语句中产生一个InterruptedException异常,从而结束该线程的阻塞状态,通过抛出异常,或者break跳出死循环,结束这个线程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)