获取使用指定的Runnable运行的所有线程

时间:2011-06-27 09:48:46

标签: java multithreading concurrent-programming

我有一个由多个线程使用的Runnable:

Runnable myRunnable = new MyWorker();
Thread one = new Thread(myRunnable);
Thread two = new Thread(myRunnable);
one.start();
two.start();

如何获取使用myRunnable创建的所有主题?

(当然这个例子很简单。我在不同类的几个地方创建了myRunnable的新线程。)

用例(根据要求):MyWorkerOfMyPage是绑定到页面的延迟工作者。如果用户离开此页面(例如,通过导航到另一个页面),那么属于MyWorkerOfMyPage的所有线程都应该被杀死,因为不再需要它们。

4 个答案:

答案 0 :(得分:4)

最好的方法是自己跟踪。例如,使用全局单例启动线程并跟踪您启动的线程。

答案 1 :(得分:4)

答案 2 :(得分:1)

虽然我的第一个想法是@Bongt的行,但如果你有一个runnable列表,你可以使用Class.isAssignableFrom,你只想知道哪些使用你的界面。

http://download.oracle.com/javase/6/docs/api/java/lang/Class.html

答案 3 :(得分:0)

在Java中,没有简单的方法可以找到引用对象的所有位置,而是必须维护自己的集合。

如果你想静静地知道这一点,你可以在你的想法中找到用法。

如果你想动态地了解这一点,你可以让Runnable将Thread添加到一个集合中(并在完成后将其删除)

一般来说,开发人员应该只是故意创建线程。即开发人员应该知道他/她何时创建线程以及这些线程将要做什么。如果你有一个好的设计,它不是你应该在运行时跟踪的东西。