----------- android培训、java培训、java学习型技术博客、期待与您交流! ---------
这次来总结一下java线程的生命周期
当然这个生命周期和我们的类似,也是从生到死,但线程却有四种不同的状态:
开始、等待、运行、停止四个状态这个线程就走完了它的一生。
// 开始线程 public void start( ); public void run( ); // 挂起和唤醒线程 publicstaticvoid sleep( ); // 终止线程 publicvoid stop( ); publicvoid interrupt( ); // 得到线程状态 public boolean isAlive( ); public boolean isInterrupted( ); // join方法 publicvoid join( ) throws InterruptedException; //会抛出异常
线程在被创建后不马上执行run()方法中的代码,而是处于等待状态。线程处于等待状态时,可以通过Thread类的方法来设置线程不各种属性,如线程的优先级(setPriority)、线程名(setName)等。
当调用start()方法后,线程就开始执行run()方法中的代码。线程进入运行状态。可以通过Thread类的isAlive方法来判断线程是否处于运行状态。当线程处于运行状态时,isAlive返回true,线程处于等待状态时,isAlive返回false。
当线程开始执行run()方法时,就会一直到这个run()方法执行完成这个线程才退出。但在线程执行的过程中,可以通过sleep()方法使线程暂停。使用sleep使线程休眠后,在设定的时间后使线程处于就绪状态。
使用sleep()需要注意:
① sleep()方法重载形式,一般为毫秒,但也可为纳秒,但极其少见。
②在使用sleep方法时必须使用throws或try{...}catch{...}。因为run方法无法使用throws,所以只能使用try{...}catch{...}。
--------------------------------------------------------------------------------------------------------------------------------------
创建一个线程
有两种方法可以 创建,分别为Thread类和用Runnable接口。在用这两种形式创建时,必须建立Thread类或它子类的实例。Thread的构造函数有很多,只举例常见的几个:
public Thread( );
public Thread(Runnable target);
public Thread(String name);
public Thread(Runnable target, String name);
public Thread(ThreadGroup group, Runnable target);
以下为具体实现:
package itheima;
public class Thread1 {
public static void main(String[] args){
test t = new test();
t.start();
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+i);
}
}
}
class test extends Thread1{
public void run(){
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+i);
}
}
}
方法二:
package itheima;
public class Thread2 {
public static void main(String[] args){
test t =new test();
Thread t = new Thread(t);
t.start();
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+i);
}
}
}
class test implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+i);
}
}
}