用线程池开启两个线程遍历

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);
	}

}

  

原文地址:https://www.cnblogs.com/liushisaonian/p/8681629.html