我有一个由多个线程使用的Runnable:
Runnable myRunnable = new MyWorker();
Thread one = new Thread(myRunnable);
Thread two = new Thread(myRunnable);
one.start();
two.start();
如何获取使用myRunnable
创建的所有主题?
(当然这个例子很简单。我在不同类的几个地方创建了myRunnable
的新线程。)
用例(根据要求):MyWorkerOfMyPage
是绑定到页面的延迟工作者。如果用户离开此页面(例如,通过导航到另一个页面),那么属于MyWorkerOfMyPage
的所有线程都应该被杀死,因为不再需要它们。
答案 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添加到一个集合中(并在完成后将其删除)
一般来说,开发人员应该只是故意创建线程。即开发人员应该知道他/她何时创建线程以及这些线程将要做什么。如果你有一个好的设计,它不是你应该在运行时跟踪的东西。