工作线程
public void run() {
try {
//登录线程需要连接线程中的资源
//判断资源存不存在,不存在wiat
if (TApplication.xmppConnection.isConnected()==false)
{
Log.i("多线程", Thread.currentThread().getId()+","+System.currentTimeMillis()+",开始wait ");
//对象锁
synchronized (TApplication.objlock) {
TApplication.objlock.wait();
}
}
Log.i("多线程", Thread.currentThread().getId()+","+System.currentTimeMillis()+",不等了,开始登录");
TApplication.xmppConnection.login("zhangjiujun2",
"1");
//加入群聊
TApplication.multiUserChat=new MultiUserChat
(TApplication.xmppConnection,
"gsd16022@conference.tarena.com");
TApplication.multiUserChat.join("我是zhangjiujun");
//在android加入成功,电脑上的spark上能看到
主线程
new Thread() {
public void run() {
try {
//让框架中的接口指向实现类
MyPacketListener listener=new MyPacketListener();
xmppConnection.addPacketListener(listener, null);
xmppConnection.connect();
Log.i("多线程", Thread.currentThread().getId()+","+System.currentTimeMillis()+",连接成功");
} catch (Exception e) {
e.printStackTrace();
}finally
{
Log.i("多线程", Thread.currentThread().getId()+","+System.currentTimeMillis()+",notify");
//对象锁
synchronized (TApplication.objlock) {
TApplication.objlock.notify();
}
}
};
}.start();
在多线程运行时,先运行application的oncrete中主线程,然后开始登陆,此时判断工作线程资源是否存在,如果没有存在调用wait方法等待,
然后,通过调用notify方法,停止等待,进行登录