请教一个多线程的问题。急!高分相送,不够再加~
class   A   { 
             public   static      void   setEdit(Integer   value){ 
             } 
 }   
 class   B   { 
             //执行数据库操作 
             public   static      void   query()   { 
          }                
 } 
 class   C   { 
                for(int   i   =   0   ;   i    <   100   ;   i   ++)   { 
                   A.setEdit(); 
 } 
                   B.query(); 
 } 
 要求在C里面一边执行A.setEdit(),一边执行B.query。B.query是执行数据库查询,只需要执行一遍,A.setEdit()需要多次。当B.query执行完,A.setEdit()也执行完毕。
------解决方案--------------------为什么要一边执行A.setEdit(),一边执行B.query呢? 
 等A.setEdit()执行完啦,再执行B.query不行呢
------解决方案--------------------以需要同步的资源为锁,如果没有资源竞争(当然是不可能的了,多线程竞争的就是资源拉,只不过你没有抽象出来的话),就自己创建锁,在建立竞争的线程时传入,竞争该锁就行了,楼上的说的有理,同步问题会带来复杂性和性能上的消耗,如果可以通过改变设计等等去掉,是件好事。
------解决方案--------------------你的意思是不是要让setEdit()并发执行,之后执行一次查询呢?是的话,这样做:   
 把单个setEdit()写为一个线程   
 在C里这样做: 
 第一个循环里,开启所有线程。 
 第二个循环里让所有的线程join()。等待所有的edit操作结束 
 然后执行query
------解决方案--------------------我猜楼主的意思,在 query 里面进行的操作是一个耗时比较长的数据库查询(包括遍历查询结果),而在 setEdit 里面是显示查询的过程(进度)。   
 请问楼主是这样吗?如果是的话,我再帮你想办法  ;)
------解决方案--------------------回maquan( 'ma:kju)    
 对,就是这样~
------解决方案--------------------关注
------解决方案--------------------关注
------解决方案--------------------是显示查询的进度还是显示查询返回的数据?