我正在尝试做类似下面的事情。
A类 - 它是一个具有静态成员变量的类,它也从线程类扩展而来。它有一个B类对象的静态arraylist。
B类 - 只是一个对象需要注册到A类的类,在注册时,来自A类的线程会在某个时间间隔内连续调用对象的某些方法。
class A extends Thread
{
private static A a;
private static ArrayList objsClassB;
void run()
{
/* infinitely iterate through the objsClassB objects and call certain methods..
in try and catch */
}
public static void StartEmulating() {
if(a == null)
{
a = new A();
a.start();
}
}
public static void registerToA(B m1)
{
objsClassB.add(m1);
}
}
class B
{
B()
{
registerToA(this);
}
}
public static void main(String[] args)
{
A.StartEmulating();
B b1 = new B();
B b2 = new B();
//make b2 = null to simulate object deletion...
b2 = null;
}
现在,我想要做的是,如果由于某种原因b2被删除(即,让我们说创建它的线程崩溃了)我想从列表中取消注册,但这不会发生。 我有办法将b2存储在列表中吗?