各位大牛,小弟現(xiàn)在遇到一個(gè)問(wèn)題,就是使用多線程調(diào)用一個(gè)耗時(shí)的方法,如何同步?代碼大體如下:
- final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
- final BusinessService service = new BusinessService();
- for(int i = 0; i < 10; i++)
- {
- scheduler.scheduleWithFixedDelay(new Runnable(){
- @Override
- public void run() {
- service.handleBusiness();
- }
-
- }, i, 5, TimeUnit.MINUTES);
- }
這個(gè)時(shí)候,如果在handleBusiness()方法上加上
Java代碼:
synchronized
,其它線程就進(jìn)不了這個(gè)方法,因?yàn)檫@個(gè)方法需要耗時(shí)5分鐘左右,大家?guī)兔ο胂胗猩逗玫慕鉀Q辦法,能讓所有線程不等待,就可以調(diào)用這個(gè)方法又保持原子操作.
解決方法:handleBusiness()寫(xiě)成線程安全的就好了。