我需要执行一个线程队列。我需要只有一个线程正在执行,然后将其他线程放入队列中,并且当前线程完成后,我需要传递给队列中的第一个线程。执行线程队列
我需要在我的JTable上实现实时搜索。该表拥有50.000行,所以没有这种方法,性能非常糟糕。我不知道如何实现它。任何人都可以帮助我?谢谢!
我需要执行一个线程队列。我需要只有一个线程正在执行,然后将其他线程放入队列中,并且当前线程完成后,我需要传递给队列中的第一个线程。执行线程队列
我需要在我的JTable上实现实时搜索。该表拥有50.000行,所以没有这种方法,性能非常糟糕。我不知道如何实现它。任何人都可以帮助我?谢谢!
使用Executors.newSingleThreadExecutor()
中的单线程Executor
。您可以将作业Runnable
传递给Executor
,让它为您完成工作。
private final Executor executor = Executors.newSingleThreadExecutor();
public void doSomethingWith(final Object obj) {
executor.execute(new Runnable() {
public void run() {
// Do something with obj
}
});
}
把你想要的代码一次运行在run
方法中。
SingleThreadExecutor
从java.util.concurrency
是回答你的问题......
-它有一个....
的螺纹尺寸 -完成一号任务移动到第二个前第一,
-保持其自己隐藏的队列以保持任务的轨迹...
但它不保证线程顺序,是吗?你能否提供“自己的隐藏队列”陈述的任何参考? – kosa
@Nambari ...我不认为有一种方法可以确定线程顺序......这一切都取决于JVM线程调度程序,进一步的JVM线程调度程序在不同的操作系统上有不同的行为......'但是这里的任务case会按照提交的方式执行.....''这就是SingleThreadExecutor的功能.....维护Queue' –
这是一项具有挑战性的任务,但是您非常确定需要线程队列以及线程创建和内存分配开销,尤其是如果只运行1个线程?我认为你需要一些接口,只需切换对象,而不是线程。 – 2012-09-06 18:21:17
你打算启动50000个线程,然后让它们一次执行一个线程吗? –