Java创建线程的方法有两种:
1.继承Thread类,并重写run()方法
2.实现Runnable接口,并实现run()方法。
不管是哪一种,都要用到run()方法,该方法时线程的执行主体。
启动线程的方法:
调用线程类的start()方法启动线程(不是调用run()方法)。线程的创建和启动的示例代码如下:
1.继承Thread
public class ThreadTest extendsThread{
@Overridepublic voidrun() {
...
}
}
在main()函数中启动线程
public static voidmain(String[] args) {
ThreadTest test= newThreadTest();
test.start();
}
2.实现Runnable接口
public class RunnableTest implementsRunnable{
@Overridepublic voidrun() {
...
}
}
在main()函数中启动线程
public static voidmain(String[] args) {
RunnableTest test= newRunnableTest();
Thread thread= newThread(test);
thread.start();
}
通常在main()函数创建和启动一个新线程后,新线程和原来main函数线程并发执行。
在Java VM中,线程分为守护线程和非守护线程(也称用户线程)。
默认情况下,创建的线程皆为用户线程。Java线程执行后返回情况有两种:
1.在单线程情况下,即只有main函数的线程,程序代码执行完成后返回。
2.在多线程情况下,需要所有用户线程执行完毕后才返回(main线程也属于用户线程)。
使用void setDaemon(boolean on)方法可以设置线程是否守护线程,需要在线程启动之前设置;而通过boolean isDaemon()测试线程是否为守护线程。