新Thread的类文件和main的类文件是相同的

时间:2016-10-09 19:20:45

标签: java multithreading instrumentation .class-file

我有一个名为Main.java的程序,如下所示。编译完这个程序后,会有两个.class文件:Main.class和Main $ 1.class。我的问题是两个.class文件完全相同。

任何人都知道出了什么问题?

我想在新线程的run()方法中检测一些代码,但是我找不到新线程的run()方法中的代码指令。

public class Main{
    public static void main(String...args){
         Thread t=new Thread(){
         @Override
             public void run(){
             System.out.println("xxxx");
             }
         };
    t.start();
    }
}

1 个答案:

答案 0 :(得分:3)

我的钱不会正确地比较两个类文件。我打赌你在类似bash的提示中写下这样的东西:

md5sum Main.class Main$1.class

(或md5sum以外的一些校验和工具)

这实际上是替换字符串中名为1的变量 - 除非您已定义该变量,否则该变量为空,因此扩展为:

md5sum Main.class Main.class

将显示为相同的文件内容。

尝试单引号第二个字符串:

md5sum Main.class 'Main$1.class'