在Linux中运行Java不会有一段时间

在Linux中运行Java不会有一段时间,第1张

概述在Linux中运行Java不会有一段时间

我发现一个Java代码作业的神秘问题。 一个朋友编程这个开头的应用程序:

public voID run() { vm.setVisible(true); while(!end); System.out.println("Finish"); vm.setVisible(false); }

当所有执行和用户退出应用程序时,布尔“结束”都是假的:

private class CloseSys implements ActionListener { public CloseSys() {super();} public voID actionPerformed(ActionEvent e) { System.out.println("CLOSE SYS"); System.out.println("end: "+end); end = true; System.out.println("end: "+end); } }

println在完成和应用程序中显示像'end'的值在我的朋友的计算机(MacOS)中真实和逻辑地转换。

问题是,在我的电脑(Ubuntu的linux)的println也显示像价值的变化,但一段时间没有结束(“完成”println永远不会到达)。 有趣的是,如果我们把印刷品放在一边…然后工作!

用于Ubuntu 10.10的Eclipse 3.6 Helios

Java Process的常驻内存使用量(RSS)不断增长

SocketoutputStream的线程安全性

如何将jar输出从ubuntu命令提示符redirect到文本文件

LWJGL自动原生select器

AWT机器人不能拖动窗口

什么会导致closures(2)与EIO失败的只读文件?

从java程序closuresIE进程

向exec发送一个cmdarray来处理 – hello world

Tomcat:未能parsing运行时描述符

end必须是volatile因为它在两个线程之间共享!

其他几个人提到它应该是不稳定的。 有一点似乎没有人提到,就是你“忙着等待”,这是错的,错的,错的错。 如果你想等待另一个线程发生什么事情,你应该使用同步锁或信号量 。

尽量让end变量易变 – 你已经被多线程问题困扰了(并且你有一个多核cpu)。

这里有一些信息: http : //www.javamex.com/tutorials/synchronization_volatile_when.sHTML

它看起来像一个线程问题。

尝试将end声明为volatile ,或者更好地使用CountDownLatch因为这可以避免占用cpu:

private CountDownLatch latch; public voID run() { try { SwingUtilitIEs.invokeAnDWait(new Runnable() { public voID run() { vm.setVisible(true); } }); try { latch.await(); System.out.println("Finish"); } finally { SwingUtilitIEs.invokeAnDWait(new Runnable() { public voID run() { vm.setVisible(false); } }); } } catch (InterruptedException ex) { System.out.println("Interrupt"); Thread.currentThread().interrupt(); } catch (InvocationTargetException ex) { throw new RuntimeException(ex); } } private class CloseSys implements ActionListner { public voID actionPerformed(ActionEvent e) { System.out.println("CLOSE SYS"); latch.countDown(); } }

请注意使用invokeAnDWait来更改来自非EDT线程的窗口可见性。

总结

以上是内存溢出为你收集整理的在Linux中运行Java不会有一段时间全部内容,希望文章能够帮你解决在Linux中运行Java不会有一段时间所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1157889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存