package io.github.viscent.mtia.ch1;
import io.github.viscent.mtia.util.Tools;
public class ThreadCreationCmp {
public static void main(String[] args) {
Thread t;
CountingTask ct = new CountingTask();
//获取处理器个数
final int numberofProceesors = Runtime.getRuntime().availableProcessors();
for (int i = 0; i < 2 * numberofProceesors; i++) {
t = new Thread(ct);
t.start();
}
for (int i = 0; i < 2 * numberofProceesors; i++) {
//以子类的方式创建线程
t = new CountingThread();
t.start();
}
}
static class Counter {
private int count = 0;
public void increment() {
count++;
}
public int value() {
return count;
}
}
static class CountingTask implements Runnable {
private Counter counter = new Counter();
@Override
public void run() {
for (int i = 0; i < 100; i++) {
dosomething();
counter.increment();
}
System.out.println("Countingrask:" + counter.value());
}
private void dosomething() {
//使当前线程休眠随机时间
Tools.randomPause(80);
}
}
static class CountingThread extends Thread {
private Counter counter = new Counter();
@Override
public void run() {
for (int i = 0; i < 100; i++) {
doSomething();
counter.increment();
}
System.out.println("CountingThread:" + counter.value());
}
private void doSomething() {
//使当前线程休眠随机时间
Tools.randomPause(80);
}
}
}
多线程树中的一个类,因为源码里有没有,自己手打的。