Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在阻塞队列中添加多个对象? BlockingQueuebq=newlinkedblockingdeque(); ServiceSync s=新ServiceSync(); s、 setService(operationConst.CODE,commonUtil.DOWNLOAD,true,null); bq.添加(s); //s=新服务同步(); s、 setService(operationConst.LOGIN、commonUtil.DOWNLOAD、true、null); bq.添加(s); tmp=新线程(bq,上下文); tmp.setBlockingQueue(bq);_Java_Android - Fatal编程技术网

Java 如何在阻塞队列中添加多个对象? BlockingQueuebq=newlinkedblockingdeque(); ServiceSync s=新ServiceSync(); s、 setService(operationConst.CODE,commonUtil.DOWNLOAD,true,null); bq.添加(s); //s=新服务同步(); s、 setService(operationConst.LOGIN、commonUtil.DOWNLOAD、true、null); bq.添加(s); tmp=新线程(bq,上下文); tmp.setBlockingQueue(bq);

Java 如何在阻塞队列中添加多个对象? BlockingQueuebq=newlinkedblockingdeque(); ServiceSync s=新ServiceSync(); s、 setService(operationConst.CODE,commonUtil.DOWNLOAD,true,null); bq.添加(s); //s=新服务同步(); s、 setService(operationConst.LOGIN、commonUtil.DOWNLOAD、true、null); bq.添加(s); tmp=新线程(bq,上下文); tmp.setBlockingQueue(bq);,java,android,Java,Android,在这里,我添加了2个对象,但每次都只在队列中添加第二个对象。当前您正在将s添加到队列中,请更改您添加的值并再次添加。因此,您将得到一个队列,该队列有两次相同的对象。取消注释s=new ServiceSync(),或者(更好)创建一个类型为ServiceSync的新变量,并将其添加到队列中。更改值后,您使用了相同的引用。请创建ServiceSync的另一个对象,设置所需的值并添加到队列,如下所示 BlockingQueue<ServiceSync>bq=new LinkedBlocki

在这里,我添加了2个对象,但每次都只在队列中添加第二个对象。

当前您正在将
s
添加到队列中,请更改您添加的值并再次添加。因此,您将得到一个队列,该队列有两次相同的对象。取消注释
s=new ServiceSync()
,或者(更好)创建一个类型为
ServiceSync
的新变量,并将其添加到队列中。

更改值后,您使用了相同的引用。请创建ServiceSync的另一个对象,设置所需的值并添加到队列,如下所示

BlockingQueue<ServiceSync>bq=new LinkedBlockingDeque<ServiceSync>();

ServiceSync s=new ServiceSync();
s.setService(OperationsConst.CODE, commonUtil.DOWNLOAD, true,null );    
bq.add(s);
//s=new ServiceSync();
s.setService(OperationsConst.LOGIN, commonUtil.DOWNLOAD, true,null );           
bq.add(s);          
tmp=new TempThread(bq, context);
tmp.setBlockingQueue(bq);
BlockingQueue bq=newlinkedblockingdeque();
ServiceSync s1=新ServiceSync();
s1.设置服务(operationConst.CODE,commonUtil.DOWNLOAD,true,null);
增加(s1);
ServiceSync s2=新ServiceSync();
s2.设置服务(operationConst.LOGIN,commonUtil.DOWNLOAD,true,null);
增加(s2);

取消注释
//s=new ServiceSync()。你为什么一开始就评论它?因为每次创建新对象。它占用内存,所以我阻塞了那条线。如果你不创建它,你想如何拥有“第二个对象”?不需要创建新变量:这是浪费时间,他只需要创建一个新对象创建一个变量是浪费时间?将新对象指定给同一变量不是最干净的代码。是的,我同意他需要创建一个新的对象,他将如何做取决于他。浪费你的时间和浪费内存堆,真的为什么浪费时间,从JVM的角度看,这没有什么不同。至于堆,是的,它可能会使用更多的内存(但这实际上取决于内存管理的类型),但是开发人员不必担心这一点,这是垃圾收集器的工作。如果他在创建第二个对象后存在此方法,那么他对旧变量或新变量执行此操作也没有什么不同。如果你正在开发实时系统,那么是的,你可以担心这一点,牺牲性能的可读性。哦,进来,考虑一下:<代码>字符串S;对于(int k=0;k
BlockingQueue<ServiceSync> bq = new LinkedBlockingDeque<ServiceSync>();

ServiceSync s1 = new ServiceSync();
s1.setService(OperationsConst.CODE, commonUtil.DOWNLOAD, true, null);
bq.add(s1);

ServiceSync s2 = new ServiceSync();
s2.setService(OperationsConst.LOGIN, commonUtil.DOWNLOAD, true, null);
bq.add(s2);