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)的调用代码>?该死,我没有。很抱歉。