package com.tju; public class ThreadDemo extends Thread { private int a = 1; private static int count = 0; @Override public void start() { super.start();// 确保线程创建,调用run()方法 // start()方法被覆盖后,主线程执行这句话 // Thread类的静态方法返回当前线程的引用,然后进行获取线程的名字等操作 System.out.println(currentThread().getName() + ":第" + (++count) + "个线程启动"); } @Override public void run() { System.out.println(currentThread().getName() + ": a = " + a); try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { ThreadDemo thread1 = new ThreadDemo(); ThreadDemo thread2 = new ThreadDemo(); thread1.start(); thread2.start(); } } 注: 1.两个线程共享变量a,即两个线程拥有共同的数据空间,进程不是这样。 2.若覆盖了start()方法,则要先调用super.start()方法,执行Thead类的start()方法,否则子线程不会被启动