java里什么是死循环,java 如何停止一个死循环
大家好,今天来为大家解答java里什么是死循环这个问题的一些问题点,包括java 如何停止一个死循环也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
Java中一个线程执行死循环有什么后果
有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,另一个线程会有执行。一.示例代码:二.两个线程类的实现如下:三.线程A执行methodA(),methodA()中有一个死循环:四.测试类:
由于线程A和线程B获得的对象锁不是同一把锁,从结果中可以看出,线程B是可以执行完成的。而线程A由于进入了while死循环,故线程A一直执行运行下去了(整个程序未结束),但线程B会结束。
也就是说,尽管线程A一直在while中执行,需要占用CPU。但是,线程的调度是由JVM或者说是操作系统来负责的,并不是说线程A一直在while循环,然后线程B就占用不到CPU了。对于线程A而言,相当于一个“计算密集型”作业了。如果while循环是不断地测试某个条件是否成立,那么这种方式就很浪费CPU,可参考一个具体的实例:JAVA多线程之线程间的通信方式中的“线程间的通信方式”第二点while轮询。
如果把Service.java修改成如下:
总结:若线程A先获得对象锁时,由于while循环,线程A一直在while空循环中。而线程B也因为无法获得锁而执行不了methodB()。
可以看出,如果在一个线程在synchronized方法中无法退出,无法将锁释放,另一个线程就只能无限等待了。
java 如何停止一个死循环
明显你的frame.show()就不应该放在actionPerformed里面,窗口只要显示一次就可以了。另外,我怀疑你是否设置,关闭窗口的动作是退出程序。你用的Frame,建议用JFrame,对Frame进行拓展的了,Frame的很多方法过时了。
看看下面这个简化的例子:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.Timer;
public class test{
static int n=0;
static Random rd= new Random();
public static void main(String[] args){
final JFrame frm= new JFrame();
frm.setSize(300,400);
//设置关闭窗口时动作为退出
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置标题通过变量 n测试是否成功刷新
frm.setTitle("标题-"+n++);
//显示窗口
frm.setVisible(true);
Timer t= new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
frm.setTitle("标题-"+n++);
//窗口大小也改变随机
frm.setSize(rd.nextInt(500),rd.nextInt(600));
}
});
t.start();//开始刷新
}
}
java程序如何判断有没有进入死循环
一般来说需要处理超时问题,你的系统应该是有和硬件做交互,这个时候有两种做法,一种是硬件本身做超时设置,比如一个线程处理接收到的指令,另一个线程处理计时,时间到后没有收到信息就是超时,超时后执行复位操作
另一种是外部系统做处理,方式一样,但是有漏洞,一般来说没有第一个指令发出后及时你外部做了超时中断,也有可能硬件线程无法终止导致卡机,除非杀死进程,但是程序的复杂性就增加了
总之:你想通过JAVA来判断一个程序是否卡死,最好的方法是这个程序能够自己判断是否卡死,否则JAVA程序还是会有点问题。如果说如何实现,就是用线程的方式实现
java我的迭代器程序为什么会出现死循环
当然会出现死循环
原因:
你没有使用next()方法,就是返回下一个元素,所以你的程序中的游标(迭代器)始终停留在了aaa的前面,而没有跳到下一个位置,因为ite.hasNext())只是判断是否有下一个元素,而 String str=(String) ite.next()才是返回下一个元素并将游标(迭代器)移动到下一个元素的位置
文章到此结束,如果本次分享的java里什么是死循环和java 如何停止一个死循环的问题解决了您的问题,那么我们由衷的感到高兴!