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);
在这里,我添加了2个对象,但每次都只在队列中添加第二个对象。当前您正在将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
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);