创建和使用匿名可运行类的最佳方法

我想为Runnable使用匿名类。有两种方法,但我不知道它们是否做相同的事情:

方法一:直接使用Runnable,然后调用run()

新建可运行(){
@凌驾
公开募捐{
}
}.run();

方法二:使用start()方法而不是run(),创建一个匿名Runnable并粘贴到Thread

新线程(新可运行(){
@凌驾
公开募捐{
}
}).start();

我认为方法二显然是正确的。但是,我不知道它是否和方法一做了相同的事情。我们可以直接调用Runnable上的run()方法吗

不,您通常不会直接在Runnable上调用run(),因为这样不会得到后台线程。如果您不想要也不需要后台线程,那么可以直接调用run(),但如果您想创建后台线程并从其中运行Runnable,则必须创建一个新线程,然后将Runnable传入其构造函数,并调用start()

此外,还有其他完成此任务的方法,包括使用Executors和ExecutorServices,您应该了解它们的用法,因为它们比使用裸体线程对象提供了更大的灵活性和功能

此外,您还需要了解Future接口和FutureTasks类的用法,它们类似于Runnables,只允许您在完成后返回结果。如果您使用了SwingWorker,那么您已经使用了未来的接口,而没有意识到它

发表评论