package my;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ActorVsThead {
static int poolSize = 1;
// 一共执行的次数
static int runSize = 100;
/*
* runSize = actorPoolSize * actorRunSize
*/
static int actorSize = 1;// 两个消息处理者
static int actorRunSize = 100;// 一个消息处理者处理的消息数
static int sleepTime = 50;
/**
* 计算密集行
*
*/
public static int jisuan(){
int j=0;
for(int i=0;i<10000000;i++){
j+=i;
}
return j;
}
public static void main(String[] args) throws Exception {
for (int i = 0; i < 5; i++) {
testActor();
}
System.out.println("==========");
for (int i = 0; i < 5; i++) {
theadTest();
}
//
}
public static void testActor() throws Exception {
ExecutorService executorService = Executors
.newFixedThreadPool(poolSize);
final CountDownLatch end = new CountDownLatch(actorSize);
long s = System.currentTimeMillis();
for (int i = 0; i < actorSize; i++) {
executorService.submit(new Runnable() {
public void run() {
for (int i = 0; i < actorRunSize; i++) {
jisuan();
}
end.countDown();
}
});
}
end.await();
System.out.println((System.currentTimeMillis()) - s);
executorService.shutdown();
}
public static void theadTest() throws Exception {
ExecutorService executorService = Executors
.newFixedThreadPool(poolSize);
final CountDownLatch end = new CountDownLatch(runSize);
long s = System.currentTimeMillis();
for (int i = 0; i < runSize; i++) {
executorService.submit(new Runnable() {
public void run() {
jisuan();
end.countDown();
}
});
}
end.await();
System.out.println((System.currentTimeMillis()) - s);
executorService.shutdown();
}
}