public final class ServiceThread implements Runnable,ISoapResultProcess {
private SOAPServiceManager soapservice;
private ServiceSync obj=new ServiceSync();
private Context mContext;
int value;
private SyncUtils util;
private ISoapResultProcess consumer;
private boolean flag=true;
private ThreadPoolExecutor mExecutor;
private boolean boollock=true;
private Object objnew=new Object();
public ServiceThread(ServiceSync a,Context context) {
this.obj=a;
util = SyncUtils.getInstance(context);
this.mContext=context;
consumer=this;
if (soapservice == null) {
soapservice = new SOAPServiceManager(context);
}
}
public void run() {
// Do sending server update request here
if (soapservice.haveNetworkConnection()) {
int op = obj.getOpconst();
Log.e("val", ""+op);
String strType=obj.getOptype();
Log.e("strType", ""+strType);
boolean boolflag=obj.getOpflag();
if(strType.contentEquals("upload"))
{
util.syncProcess(op, boolflag,consumer);
}else
{
util.downloadsyncProcess(op, boolflag,consumer);
}
flag=util.getOpflag();
synchronized (objnew) {
try {
objnew.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.e("runflag0", "-"+flag);
/*if(flag)
{
flag = false;
run();
return;
}*/
return;
}
}
}
@Override
public void processResponse(JSONObject result, String method) {
// TODO Auto-generated method stub
boollock=java.lang.Thread.holdsLock(objnew);
if(boollock)
{
objnew.notify();
}
mExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
ServiceThreadlocal tempThreadServiceThread = new ServiceThreadlocal(1,method,true, mContext,result,consumer);
mExecutor.execute(tempThreadServiceThread);
}
}
Above program Threadpool executor execute each time different object value received. in this case example i have send obj1,obj2. if obj1 executed that time obj2 will be waiting stage. that object released next object will be execute. but my program first object only executed. Note: first object executed get the respose then another object want to be executed
public ServiceThread(ServiceSync a,Context context) {
mExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
this.obj=a;
util = SyncUtils.getInstance(context);
this.mContext=context;
consumer=this;
if (soapservice == null) {
soapservice = new SOAPServiceManager(context);
}
}
//...
@Override
public void processResponse(JSONObject result, String method) {
// TODO Auto-generated method stub
boollock=java.lang.Thread.holdsLock(objnew);
if(boollock)
{
objnew.notify();
}
ServiceThreadlocal tempThreadServiceThread = new ServiceThreadlocal(1,method,true, mContext,result,consumer);
mExecutor.submit(tempThreadServiceThread);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.