线程的创建与启动
可通过两种方法来定义线程
一、定义线程
1.扩展java.lang.Thread
public void run();
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
Thread 的子类应该重写该方法。
2.实现java.lang.Runnable
void run();
使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。
二、实例化线程
1.如果是Thread的扩展,直接new即可。
2.如果是实现Runnable的接口,则用Thread的构造方法:
Thread(Runnable target)
Thread(Runnable target, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
三、启动线程
在线程的Thread对象上调用start方法,而不是run方法。
在调用start()方法之前:线程处于新状态中,新状态指:有一个Thread对象,但还没有一个真正的线程。
在调用start()方法之后:启动新的执行线程(具有新的调用栈),该线程从新状态转移到可运行状态,当该线程获得机会执行时,其目标run()方法将运行。
注意:在Runnable或者Thread类内部调用run方法并不启动新的线程。
四、案例