日期:2014-05-20  浏览次数:20691 次

请教关于线程的一个问题
各位好

以下是我写的一段代码,很神奇的是,在被标记的那一行,有时会报出NULL指针错误。

有人告诉我说可能是线程异步,导致在if的时候是非空,然后进入执行块的时候,由于某些原因,变成空了,这可能吗?

Java code

                    if (sender != null && !sender.isAlive())
                    {
                        sender.run();  <===标记
                        Log.i(TAG_LISTENER, "$ServerSender back to running");
                    }
                    else if (sender == null)
                    {
                        sender = new ServerSender(serverSocket);
                        sender.start();
                        Log.i(TAG_LISTENER,
                                "$ServerSender started in ServerListener");
                    }



请各位畅所欲言,先谢谢了。

------解决方案--------------------
如果sender是公用的对象,完全就有可能
------解决方案--------------------
也有可能不是sender为NULL,而是run方法中某个变量是NULL。
提供的信息太少,无法确定准确的原因。