註釋等思考明天再加哈,《不拖延的心理學》收穫良多,先把它看完java
import java.util.concurrent.TimeUnit; public class ThreadInner { public static void main(String[] args) { new InnerThread1("innerthread1"); new InnerThread2("innerthread2"); new InnerRunnable1("innerRunnable1"); new InnerRunnable2("innerRunnable2"); new ThreadMethod("threadmethod").runTask(); } } class InnerThread1 { private int countDown = 5; private Inner inner; private class Inner extends Thread { Inner(String name) { super(name); start(); } public void run() { try { while(true) { System.out.println(this); if(--countDown == 0) { return; } sleep(10); } } catch(InterruptedException e) { System.out.println("interrupted"); } } public String toString() { return getName() + ": " + countDown; } } public InnerThread1(String name) { inner = new Inner(name); } } class InnerThread2 { private int countDown = 5; private Thread t; public InnerThread2(String name) { t = new Thread(name) { public void run() { try { while(true) { System.out.println(this); if(--countDown == 0) { return ; } sleep(10); } } catch(InterruptedException e) { System.out.println("sleep() interrupted"); } } public String toString() { return getName() + ": " + countDown; } }; t.start(); } } class InnerRunnable1 { private int countDown = 5; private Inner inner; private class Inner implements Runnable { Thread t; Inner(String name) { t = new Thread(this, name); t.start(); } public void run() { try { while(true) { System.out.println(this); if(--countDown == 0) { return; } TimeUnit.MICROSECONDS.sleep(10); } } catch(InterruptedException e) { System.out.println("sleep() interrupted"); } } public String toString() { return t.getName() + ": " + countDown; } } public InnerRunnable1(String name) { inner = new Inner(name); } } class InnerRunnable2 { private int countDown = 5; private Thread t; public InnerRunnable2(String name) { t = new Thread(new Runnable() { public void run() { try { while(true) { System.out.println(this); if(--countDown == 0) { return; } TimeUnit.MICROSECONDS.sleep(10); } } catch(InterruptedException e) { System.out.println("sleep interrupted"); } } public String toString(){ //return Thread.currentThread().getName() + ": " +countDown; return t.getName() + ": " +countDown; } }, name); t.start(); } } class ThreadMethod { private int countDown = 5; private Thread t; private String name; public ThreadMethod(String name) { this.name = name; } public void runTask() { if(t == null) { t = new Thread(name) { public void run() { try { while(true) { System.out.println(this); if(--countDown == 0) { return; } sleep(10); } } catch(InterruptedException e) { System.out.println("sleep() interrupted"); } } public String toString() { return getName() + ": " + countDown; } }; t.start(); } } }