适用场景:读取数据库数据,刷数据等批量操作
直接上代码
package test;
import com.alibaba.fastjson.JSONObject;
import io.tava.function.Consumer1;
import org.springframework.stereotype.Component;
@Component
public class Producers implements Consumer1<JSONObject>{
private ThreadPoolDemo threadPoolDemo;
public Producers(ThreadPoolDemo threadPoolDemo) {
this.threadPoolDemo = threadPoolDemo;
}
@Override
public void accept(JSONObject msg) {
//生产
threadPoolDemo.execute(new Consumers(msg));
}
}
package test;
import com.alibaba.fastjson.JSONObject;
public class Consumers implements Runnable {
private final JSONObject msg;
Consumers(JSONObject msg) {
this.msg = msg;
}
@Override
public void run() {
//消费执行
System.out.println("消费者消费了:"+msg.toJSONString());
}
}
package test;
import io.tava.util.BlockRejectedExecutionHandler;
import io.tava.util.NamedThreadFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Service
public class ThreadPoolDemo {
public final ThreadPoolExecutor threadPoolExecutor;
@Autowired
public ThreadPoolDemo() {
int coreThreadSize = 32;
int maxThreadSize = 32;
int workQueueCapacity = 102400;
this.threadPoolExecutor = new ThreadPoolExecutor(
coreThreadSize,
maxThreadSize,
1,
TimeUnit.MINUTES,
new ArrayBlockingQueue<>(workQueueCapacity),
new NamedThreadFactory("full-indexer"),
BlockRejectedExecutionHandler.getInstance());
}
public void execute(Runnable command) {
threadPoolExecutor.execute(command);
}
}
package test;
import com.alibaba.fastjson.JSONObject;
public class main {
public static void main(String[] args) {
Producers producers = new Producers(new ThreadPoolDemo());
for (int i = 0; i < 10000; i++) {
JSONObject msg = new JSONObject();
msg.put("执行id",i);
producers.accept(msg);
}
}
}