小编Eri*_*ang的帖子

应该使用可以证明"volatile"声明的代码示例

目前我无法理解何时应该使用volatile声明变量.

我已经做了一些研究并且长时间搜索了一些关于它的材料并且知道当一个字段被声明为volatile时,编译器和运行时会注意到这个变量是共享的,并且它上面的操作不应该与其他内存重新排序操作.

但是,我仍然无法理解在什么情况下我们应该使用它.我的意思是,有人可以提供任何示例代码,可以证明使用"volatile"带来的好处或解决问题与不使用它相比?

java concurrency multithreading volatile

15
推荐指数
2
解决办法
5723
查看次数

为什么在创建新实例时使用DUP

目前我只是在一个使用java字节码的项目中.我经常看到,当创建一个新的类实例并在其上调用一个方法时,字节码将是:

NEW <MyClass>
DUP
INVOKESPECIAL <MyClass.<init>>
Run Code Online (Sandbox Code Playgroud)

这里为什么要做"DUP"?从VM Spec,我得到描述"在操作数堆栈上复制顶部值并将重复的值推送到操作数堆栈".但是为什么在这里需要复制操作数堆栈的最高值呢?谢谢.

java bytecode

13
推荐指数
1
解决办法
1056
查看次数

java gzip无法保留原始文件的扩展名

我正在使用 GZIPOutputStream 将一个 xml 文件压缩为 gz 文件,但压缩后我发现 gz 文件层次结构中缺少 xml 文件 (.xml) 的扩展名。我需要保留扩展名,因为压缩的 gz 文件将由第三方系统使用,该系统期望在解压缩 gz 文件后获得 .xml 文件。有什么解决办法吗?我的测试代码是:

public static void main(String[] args) {
    compress("D://test.xml", "D://test.gz");
}

private static boolean compress(String inputFileName, String targetFileName){
     boolean compressResult=true;
     int BUFFER = 1024*4;
     byte[] B_ARRAY = new byte[BUFFER]; 
     FileInputStream fins=null;
     FileOutputStream fout=null;
     GZIPOutputStream zout=null;
     try{
         File srcFile=new File(inputFileName);
         fins=new FileInputStream (srcFile);
         File tatgetFile=new File(targetFileName);
         fout = new FileOutputStream(tatgetFile);
         zout = new GZIPOutputStream(fout);
         int number = 0; 
         while((number = fins.read(B_ARRAY, 0, BUFFER)) != …
Run Code Online (Sandbox Code Playgroud)

java gzip

6
推荐指数
1
解决办法
6709
查看次数

如何知道我的代码在IDE中以"调试"模式运行?

如何在"运行"模式下编写在"调试"模式下运行时不同的代码(例如在eclipse中调用为"Debug As Java Application")(例如在eclipse中调用为"Run as Java Application") )?例如,代码可以在"Debug As Java Application"时打印"Haha,您正在调试",但在"Run As Java Application"时不打印任何内容(我不想在调用main时附加任何args)有没有任何通用的方法可以在任何IDE下工作,比如eclipse,IntelliJ等?

java

5
推荐指数
1
解决办法
2121
查看次数

想让"System.out.println()"将消息打印到log4j

我们的项目使用System.out.println()或System.err.println()来输出调试消息.现在我们要使用log4j将这些输出定向到日志文件而不仅仅是控制台.为了避免影响或风险,我们不想做的全部替换"的System.out.println()"和"logger.debug",但只是想也许写一些代码,使这些输出重定向到的log4j日志文件是没有仍在使用System.out.println()的每个类中的代码更改(我们知道这是不好的做法,但我们不想进行全局搜索和当前替换).可能吗?谢谢.

java logging

3
推荐指数
1
解决办法
7575
查看次数

如何发现用户有一段时间没有操作Swing应用程序

我们有一个Swing应用程序,目前我需要添加一个功能,当用户不运行应用程序一段时间(例如5分钟)时,该功能可以完成一些工作.我不知道如何实现这个(可能应该监视用户调用的所有动作事件,如果5分钟,甚至没有新的动作引发作业,但不知道如何).任何建议都将不胜感激.

java swing

2
推荐指数
1
解决办法
204
查看次数

JLabel.setVisible(false) 使其他组件的位置改变

我在 swing 应用程序中遇到了一个重新布局问题,我使用 GridBagLayout 将四个组件(两个 JLabels、一个 JTextField 和一个表,每个组件占用一行)添加到面板,对于某些逻辑,我需要使一个标签可见 true 或基于某些条件为 false,但是当我调用 setVisible(false) 时,该标签下面的组件会出现一点,而当我调用 setVisible(true) 时,它们会下降一点,这会使 GUI 闪烁。有什么方法可以让其他元件粘在面板上吗?谢谢。

java swing layout-manager

1
推荐指数
1
解决办法
1684
查看次数