繁体   English   中英

main()和run()之间的区别和效率是什么?

[英]What is the difference and efficiency between main() and run()?

因此,我对JSwing陌生,在我去年完成的AP计算机科学课程中没有涉及太多内容。 因此,我对继承和Java语言的所有核心部分都很熟悉,但是我看不到main()和run()这两种方法之间的区别。

我的代码现在可以正常使用:

主类:

 import java.awt.BorderLayout; import java.awt.Component; import javax.swing.JButton; import javax.swing.JFrame; public class Main { private JFrame frame; public Main() { frame = new JFrame("SoundCombine"); //Create frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Close the frame when |x| button is pressed //Add components to the frame JButton button = new JButton(); frame.getContentPane().add(button, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } } 

跑步班:

 public class Run { public static void main(String args[]){ new Main(); } } 

但是,我也看到了这种启动JSwing应用程序的方法:

 SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); 

两者之间的最大区别是什么? 使用这两种方法中的任一种都会在路上遇到什么样的问题。 尽管编写同一程序有很多不同的方法,但是我想知道执行此操作的常规方法。

谢谢!

您在问橙子和水牛城有什么区别-这是两个完全不同的东西。

  • main方法是所有Java程序的入口点,即使没有主方法(例如applet)的Java程序实际上也存在main方法,但它是看不见的。
  • 您所说的run方法是一种方法,它必须是实现Runnable接口的任何类的一部分。 这不是程序启动的入口。
  • 上面的示例将Runnable馈送到SwingUtilities.invokeLater(...)方法中,是一种确保在Swing事件线程上调用Runnable的run方法中的代码的方法,这是您在启动时要执行的操作出于线程安全目的而使用Swing( 而不是 JSwing)应用程序,因为如果您不这样做,则可能会引发错误(实际上是异常)。
  • 无论您是否在Swing事件线程上排队,Swing应用程序仍然需要main方法。 这不是“使用main或run”,因为它们又是完全不同的动物。
  • 仅仅因为某些代码“现在可以工作”并不能保证以后会工作。 线程异常是间歇性发生的,并且在最不希望发生时臭名昭著。

暂无
暂无

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

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