运行id存储在map中的线程的方法

时间:2014-06-12 18:13:09

标签: java multithreading methods casting hashmap

使用Java(上周最新),我试图调用一个我存储在hashmap中的线程的方法。我想要这样做的原因(将线程存储在地图与列表中)是我可能想要从多个地方调用该线程的方法,并且不希望将数据存储在MonitorThread中的静态变量中能够这样做。

private HashMap<String, Thread> threads = new HashMap<String, Thread>();

MonitorThread t = new MonitorThread();
t.start();
threads.put("monitor", t);

(MonitorThread)(threads.get("monitor")).SendAlert();

我在最后一行收到cannot resolve SendAlert错误。为什么呢?

1 个答案:

答案 0 :(得分:2)

尝试:

((MonitorThread) threads.get("monitor")).SendAlert();

相反。 .运算符的操作顺序高于强制转换。

此外,正如@MarcoAcierno在下面的评论中指出的那样,如果您不小心,可以获得ClassCastException,因此您可以:

if(threads.get("monitor") instanceof MonitorThread) ((MonitorThread) threads.get("monitor")).SendAlert();