我有一个问题:我有一个jframe1,他在ActionPerformed上调用了jframe2。
JFrame是线程还是?所以我在jframe2中尝试了wait()方法,然后通知了jframe1中的jframe2。

我在jframe2中的代码(单击按钮后运行的方法):

private void read(){

    synchronized(jframe1){
        try {

            if(writer.checkLast() == null){
                this.wait();
                jLabel.setText(writer.getLast());
            }
            else{
                jLabel.setText(writer.getLast());
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }


}


但是问题是,如果我使用this.wait();在jframe2中,我的jframe1也被锁定了。

对不起,我的英语不好,如果有人回答,谢谢!

最佳答案

框架是螺纹还是?


不,绝对不是。只有一个线程可以发生所有绘画和用户输入事件,即事件调度线程。但是,此线程与应用程序的主线程不同,这可能导致您相信每个框架都有自己的线程。

由于所有事件都在事件分发线程上发生,因此您不必进行任何同步,并且框架可以调用彼此的方法而无需任何同步或通知。这就是首先进行单线程设计的原因(普遍的共识是,几乎不可能使用多线程GUI)。

09-26 04:18