繁体   English   中英

Java jframe 在线程中运行代码时冻结

[英]Java jframe freezing when running code in thread

我正在制作一个可以破解 SHA1 代码的蛮力程序。 我对使用线程非常陌生,我想通过并行运行来使用它们来加速应用程序。 谁能帮我阻止 jframe 冻结。 线程工作并产生正确的答案,但不允许我再次使用 jframe。

我用于线程的代码:

public class crack1 extends Thread {

    char[] pass1 = new char[1];

    public boolean crack11() {
        // while(!exit){

        for (int i = 0; i < length; i++) {

            pass1[0] = alpha1[i];
            if (compareit(input, pass1) == true) {

                System.out.println(String.valueOf("password =" + pass1[0]));
                return true;

            }
        }
        return false;
    }

    private boolean cracker(String input) {

        crack1 obj1 = new crack1();
        crack2 obj2 = new crack2();
        crack3 obj3 = new crack3();
        crack4 obj4 = new crack4();
        crack5 obj5 = new crack5();
        crack6 obj6 = new crack6();

        if (obj1.crack11() == true) {
            jTextArea1.append("password found");
            System.out.println("password found");
        }

        // obj2.run();
        // obj3.run();
        // obj4.run();
        // obj5.run();
        // obj6.run();

        System.out.println("done");

    }

    public static boolean compareit(String input, char[] test) {
        System.out.println(String.valueOf(test));

        String answer = String.valueOf(test);

        String check = sha1(String.valueOf(test));

        if (input.equals(check)) {
            // jTextArea1.append("password ="+answer);
            // System.out.println(String.valueOf("password ="+answer));
            return true;
        } else {
            return false;
        }
    }
}
//obj2.run();

这不是你使用线程的方式。 直接调用 run() 方法只会导致代码在当前线程上执行。

要让代码在单独的线程上执行,您需要使用:

obj2.start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM