Think_in_java_4th(并发学习二)
程序员文章站
2022-04-10 15:23:41
使用Executor java.util.concurrent CachedThreadPool FixedThreadPool SingleThreadExecutor 参考 Java编程思想(第4版) 656页开始 Thinking in Java(第四版 ) 1120页开始 ......
使用executor
java.util.concurrent
cachedthreadpool
package concurrency.executorservice; //: concurrency/cachedthreadpool.java import java.util.concurrent.*; import concurrency.liftoff.liftoff; public class cachedthreadpool { public static void main(string[] args) { executorservice exec = executors.newcachedthreadpool(); for (int i = 0; i < 5; i++) exec.execute(new liftoff()); exec.shutdown(); } } /* * output: (sample) #0(9), #0(8), #1(9), #2(9), #3(9), #4(9), #0(7), #1(8), * #2(8), #3(8), #4(8), #0(6), #1(7), #2(7), #3(7), #4(7), #0(5), #1(6), #2(6), * #3(6), #4(6), #0(4), #1(5), #2(5), #3(5), #4(5), #0(3), #1(4), #2(4), #3(4), * #4(4), #0(2), #1(3), #2(3), #3(3), #4(3), #0(1), #1(2), #2(2), #3(2), #4(2), * #0(liftoff!), #1(1), #2(1), #3(1), #4(1), #1(liftoff!), #2(liftoff!), * #3(liftoff!), #4(liftoff!), */// :~
fixedthreadpool
package concurrency.executorservice; //: concurrency/fixedthreadpool.java import java.util.concurrent.*; import concurrency.liftoff.liftoff; public class fixedthreadpool { public static void main(string[] args) { // constructor argument is number of threads: executorservice exec = executors.newfixedthreadpool(5); for (int i = 0; i < 5; i++) exec.execute(new liftoff()); exec.shutdown(); } } /* * output: (sample) #0(9), #0(8), #1(9), #2(9), #3(9), #4(9), #0(7), #1(8), * #2(8), #3(8), #4(8), #0(6), #1(7), #2(7), #3(7), #4(7), #0(5), #1(6), #2(6), * #3(6), #4(6), #0(4), #1(5), #2(5), #3(5), #4(5), #0(3), #1(4), #2(4), #3(4), * #4(4), #0(2), #1(3), #2(3), #3(3), #4(3), #0(1), #1(2), #2(2), #3(2), #4(2), * #0(liftoff!), #1(1), #2(1), #3(1), #4(1), #1(liftoff!), #2(liftoff!), * #3(liftoff!), #4(liftoff!), */// :~
singlethreadexecutor
package concurrency.executorservice; //: concurrency/singlethreadexecutor.java import java.util.concurrent.*; import concurrency.liftoff.liftoff; public class singlethreadexecutor { public static void main(string[] args) { executorservice exec = executors.newsinglethreadexecutor(); for (int i = 0; i < 5; i++) exec.execute(new liftoff()); exec.shutdown(); } } /* * output: #0(9), #0(8), #0(7), #0(6), #0(5), #0(4), #0(3), #0(2), #0(1), * #0(liftoff!), #1(9), #1(8), #1(7), #1(6), #1(5), #1(4), #1(3), #1(2), #1(1), * #1(liftoff!), #2(9), #2(8), #2(7), #2(6), #2(5), #2(4), #2(3), #2(2), #2(1), * #2(liftoff!), #3(9), #3(8), #3(7), #3(6), #3(5), #3(4), #3(3), #3(2), #3(1), * #3(liftoff!), #4(9), #4(8), #4(7), #4(6), #4(5), #4(4), #4(3), #4(2), #4(1), * #4(liftoff!), */// :~
参考
java编程思想(第4版) 656页开始
thinking in java(第四版 ) 1120页开始
上一篇: CentOS安装Navicat
下一篇: 大牌手机厂商齐聚 双11京东购机更有保障