public class ThreadImpl01 extends Thread { private int ticket = 5; @Override public void run() { for (int i = 0; i < 10; i++) { if (ticket > 0) { System.out.println("[ThreadImpl01] = " + ticket--); } } } }
public class ThreadImpl02 implements Runnable { private int ticket = 5; @Override public void run() { for (int i = 0; i < 10; i++) { if (ticket > 0) { System.out.println("[ThreadImpl02] = " + ticket--); } } } }
public class ThreadDemo { public static void main(String[] args) { /** * 实现Runnable接口相比继承Thread类的优势: * 1、可以避免由于Java的单继承特性而带来的局限; * 2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的; * 3、适合多个相同程序代码的线程区处理同一资源的情况。 */ new ThreadImpl01().start(); new ThreadImpl01().start(); new ThreadImpl01().start(); ThreadImpl02 threadImpl02 = new ThreadImpl02(); new Thread(threadImpl02).start(); new Thread(threadImpl02).start(); new Thread(threadImpl02).start(); } }