java创建线程

1,继承自Thread类

public class Thread1 extends Thread{
	@Override
	public void run() {
		System.out.println(this.getName());
	}

	public static void main(String[] args) {
		Thread1 t = new Thread1();
		t.start();
	}
}

 

2,实现Runnable接口(使用Runnable接口更加灵活

public class T {
	private String name;
	
	public T(String name){
		this.name = name;
	}
	
	public String getName(){
		return this.name;
	}
}
public class Thread2 extends T implements Runnable {
	public Thread2(String name){
		super(name);
	}
	
	public void run() {
		System.out.println(this.getName());	
        }

	public static void main(String[] args) {
		Thread1 t = new Thread1("thread1");
		t.start();
	}
}

Thread类本身也是Runnable接口的一个具体实现:

public class Thread implements Runnable { ....
}

在启动线程时,一定不要使用Thread.run(),这将变成方法调用而不是启动线程,虽然Thread.start()本质上还是调用线程的run()方法

    /**
     * Causes this thread to begin execution; the Java Virtual Machine 
     * calls the <code>run</code> method of this thread. 
     * <p>
     * The result is that two threads are running concurrently: the 
     * current thread (which returns from the call to the 
     * <code>start</code> method) and the other thread (which executes its 
     * <code>run</code> method). 
     * <p>
     * It is never legal to start a thread more than once.
     * In particular, a thread may not be restarted once it has completed
     * execution.
     *
     * @exception  IllegalThreadStateException  if the thread was already
     *               started.
     * @see        java.lang.Thread#run()
     * @see        java.lang.Thread#stop()
     */
    public synchronized void start() {
        if (started)
            throw new IllegalThreadStateException();
        started = true;
        group.add(this);
        start0();
    }

 

posted @ 2012-11-19 17:34  心意合一  阅读(119)  评论(0编辑  收藏  举报