Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的多线程问题_Java_Multithreading_Swing_Thread Sleep - Fatal编程技术网

java中的多线程问题

java中的多线程问题,java,multithreading,swing,thread-sleep,Java,Multithreading,Swing,Thread Sleep,我在线程中遇到了一个问题。这是我的代码 private void CustomBrightActionPerformed(java.awt.event.ActionEvent evt) { creed = new Thread() { public void run() { final JFrame jfmae = new JFrame("Set BrightNess"); JLabel jla = ne

我在线程中遇到了一个问题。这是我的代码

private void CustomBrightActionPerformed(java.awt.event.ActionEvent evt) {
    creed = new Thread() {
        public void run() {
            final JFrame jfmae = new JFrame("Set BrightNess");
            JLabel jla = new JLabel("!@#$");

            jfmae.add(jla, BorderLayout.CENTER);
            jfmae.setSize(180, 180);

            jfmae.addMouseListener(new Mymos());
            jfmae.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent windowEvent) {
                    jfmae.dispose();
                }
            });
            jfmae.setVisible(true);
        }
    };
    creed.start();
}

class Mymos extends MouseAdapter {
    public void mousePressed(java.awt.event.MouseEvent evt) {
        try {
            creed.sleep(3000);
        } catch (InterruptedException e) {

        }
        Bigh2MousePressed(evt);
    }

    private void Bigh2MousePressed(java.awt.event.MouseEvent evt) {
        System.out.println("dsds");
    }
}




   
CustomBrightActionPerformed

是另一个类处理动作事件的方法,
Mymos
是内部类。问题是我正在睡眠
creed线程
,但我的主线程也在睡眠3秒钟。为什么?

你在主线程上调用

如果
是静态的
方法,您只是使用它的线程实例(creed)来调用它,这是不鼓励的,它会休眠调用此方法的
线程


如果你想暂停creed线程,那么你需要从它的
run()
方法执行一个问题。如果我在Bigh2MousePressed中执行一些操作,并且如果有一些延迟,那么它还会暂停主线程执行吗?如果在同一线程上调用它,那么是的,如果它在新线程中异步调用,然后它将立即返回到主线程,并在另一个线程上执行操作。我从creed的run方法中尝试了thread.sleep(),但它仍在暂停主线程。您是否删除了对
creed.sleep(3000)的调用?该死,我没有。很抱歉。