public short deinitialize()
	{
		exit.set(true);
// Stop the packet sniffing
		MsgAnalyzerCmnDef.WriteDebugSyslog("De-initialize the SerialReceiver object\n");
		short ret = serial_receiver.deinitialize();
		if (MsgAnalyzerCmnDef.CheckFailure(ret))
			return ret;

// Notify the worker thread of analyzing serial data to die...
//		t.interrupt();
		MsgAnalyzerCmnDef.WriteDebugSyslog("Notify the worker thread of analyzing the serial data it's going to die...");
		synchronized(this)
		{
			notify();
		}
		MsgAnalyzerCmnDef.WriteDebugSyslog("Wait for the worker thread of analyzing serial data's death...");
        try 
        {
//wait till this thread dies
            t.join();
//            System.out.println("The worker thread of receiving serial data is dead");
            MsgAnalyzerCmnDef.WriteDebugSyslog("Wait for the worker thread of analyzing serial data's death Successfully !!!");
		}
		catch (InterruptedException e)
		{
			MsgAnalyzerCmnDef.WriteDebugSyslog("The analyzing serial data worker thread throws a InterruptedException...");
		}
		catch(Exception e)
		{
			MsgAnalyzerCmnDef.WriteErrorSyslog("Error occur while waiting for death of analyzing serial data worker thread, due to: " + e.toString());
		}

		return ret;
	}