看到别人写的代码:EventQueue.invokeLater(new Runnable()
{
public void run()
{
....
}
});
看起来像是启动一个线程,并在线程中做一些事情,为什么放在EventQueue.invokeLater中呢?(为什么不直接创建一个Thread对象)这是什么意思呢?这种写法主要用于什么场合呢?
{
public void run()
{
....
}
});
看起来像是启动一个线程,并在线程中做一些事情,为什么放在EventQueue.invokeLater中呢?(为什么不直接创建一个Thread对象)这是什么意思呢?这种写法主要用于什么场合呢?
在java中并不像别的语言那样能直接传入一个代码块,而是传入一个对象
其中:
EventQueue.invokeLater(new Runnable()
{
public void run()
{
....
}
});
的 new Runnable(){run()}只是一种创建对象的简便方式,这样写避免了先创建一个继承Runable接口的
类,然后再创建对象,所以比较简便,在多线程中经常用到。
具体的请看一下面向对象中对面向接口编程的介绍
EventQueue.invokeLater(...)这种写法。这种写法我以前没用过,
我以前用的都是直接创建一个线程对象来做,故请教两者的区别。
就好比,放学了,老师给你布置个任务。你回家做。
你可以试一下EventQueue.invokeLater(new Thread() {
public void run() {
....
}
});
调用的时候EventQueue.invokeLater(new Runnable(){public void run(){};})
其中的参数并不是实现创建好的,而是在调用的时候才创建;
也可以EventQueue.invokeLater(runnableInstance);
前提是runnableInstance实现了Runnable接口