package com.psd.test;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
public class ThreadDemo {
// 使用线程池,长度为2
private final static ExecutorService pool = Executors.newFixedThreadPool(2);
final long waitTime = 8 * 1000;
final static long awaitTime = 5 * 1000;
// 对于100个数,开启你两个线程遍历
// 定义一个内部线程类
class CountThread implements Runnable {
private long a;
public CountThread(long a) {
super();
this.a = a;
}
@Override
public void run() {
long count = 0;
for (int i = 0; i < a; i++) {
count = count + i;
for (int j = 0; j < a; j++) {
count = count + j;
}
}
System.err.println(count + Thread.currentThread().getName() + new Date());
}
}
@Test
public void test02() {
// 比如,要去干封装好的同样的事情
// 比如有100个数打印
// 如何让两个线程干这件事呢
List<Runnable> runnables = new ArrayList<Runnable>();
CountThread runnable3 = new CountThread(100000);
CountThread runnable1 = new CountThread(100000);
CountThread runnable2 = new CountThread(100000);
runnables.add(runnable3);
runnables.add(runnable1);
runnables.add(runnable2);
for (Runnable runnable : runnables) {
pool.execute(runnable);
}
pool.shutdown();
}
// 方法测试
public static void main(String[] args) {
System.err.println(Thread.currentThread().getName() + new Date());
ThreadDemo threadDemo = new ThreadDemo();
threadDemo.test02();
}
public void test03() {
this.test04(100000);
this.test04(100000);
this.test04(100000);
}
public void test04(long a) {
long count = 0;
for (int i = 0; i < a; i++) {
count = count + i;
for (int j = 0; j < a; j++) {
count = count + j;
}
}
System.err.println(count);
}
}