jialisoftw

Java多线程对耗时方法的同步问题

各位大牛,小弟现在遇到一个问题,就是使用多线程调用一个耗时的方法,如何同步?代码大体如下: 
Java代码:  
  1.   final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);   
  2. final BusinessService service = new BusinessService();   
  3. for(int i = 0; i < 10; i++)  
  4. {  
  5.     scheduler.scheduleWithFixedDelay(new Runnable(){  
  6.         @Override  
  7.         public void run() {  
  8.             service.handleBusiness();  
  9.         }  
  10.           
  11.     }, i, 5, TimeUnit.MINUTES);  
  12. }  
这个时候,如果在handleBusiness()方法上加上
Java代码:  
synchronized  
,其它线程就进不了这个方法,因为这个方法需要耗时5分钟左右,大家帮忙想想有啥好的解决办法,能让所有线程不等待,就可以调用这个方法又保持原子操作.
解决方法:handleBusiness()写成线程安全的就好了。

posted on 2013-01-15 15:41 飞猪一号 阅读(1625) 评论(3)  编辑  收藏

评论

# re: Java多线程对耗时方法的同步问题 2013-01-16 10:13 imxylz

既然是非线程安全的代码,必然需要同步,这样多线程执行和单线程没有分别。改写代码为线程安全才是正确的道理。

实在没有办法,应该降低handleBusiness里面的锁的粒度,最终需要同步的逻辑越少越好。  回复  更多评论   

# re: Java多线程对耗时方法的同步问题 2013-01-29 12:15 I Love me

<script>alert();</script>  回复  更多评论   

# re: Java多线程对耗时方法的同步问题 2013-03-06 10:40 红色石头

handleBusiness()写成线程安全的就好了。哈哈,是百度上弄的吗?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2013年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿

随笔档案

友情链接

搜索

最新评论

阅读排行榜

评论排行榜