spring+多线程小技巧

来源:互联网 发布:linux批量安装 编辑:程序博客网 时间:2024/05/17 23:12



package com.liyang.api;public interface Fang{void doWork(int t) ;}

package com.liyang.api.impl;import org.springframework.stereotype.Service;import com.liyang.api.Fang;@Servicepublic class A implements Fang , Runnable{@Overridepublic void doWork(int t) {System.out.println("A say..." + t) ;}@Overridepublic void run() {int t = 100 ;while(t-- > 0){doWork(t) ;Thread.yield() ; }}}

package com.liyang.api.impl;import org.springframework.stereotype.Service;import com.liyang.api.Fang;@Servicepublic class B implements Fang , Runnable{@Overridepublic void doWork(int t) {System.out.println("B say..." + t) ;}@Overridepublic void run() {int t = 100 ;while(t-- > 0){doWork(t) ;Thread.yield() ; }}}

package com.liyang.api.impl;import org.springframework.stereotype.Service;import com.liyang.api.Fang;@Servicepublic class C implements Fang , Runnable{@Overridepublic void doWork(int t) {System.out.println("C say..." + t) ;}@Overridepublic void run() {int t = 100 ;while(t-- > 0){doWork(t) ;Thread.yield() ; }}}

package com.liyang;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.annotation.PostConstruct;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class Main {@Autowiredprivate List<Runnable> fangApis ;@PostConstructvoid init(){ExecutorService executor = Executors.newCachedThreadPool() ;//ExecutorService executor = Executors.newSingleThreadExecutor() ;for(Runnable f : fangApis) executor.submit(f) ;executor.shutdown() ; }}







0 0
原创粉丝点击