继承Thread类创建多线程
通过继承Thread类,并重写Thread类中的run()
方法就可以实现多线程。
在Thread类中,提供了一个start()
方法用于启动新线程,线程启动后,系统会自动调用run()
方法。
class MyThread extends Thread {
public void run() {
while(true) {
System.out.println(Thread.currentThread().getName()+" runnig...");
try {
Thread.sleep(1000); //当前线程休眠1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class test {
public static void main(String[] args) {
MyThread myThread = new MyThread(); //创建线程MyThread的线程对象
myThread.start(); //开启线程
while(true) {
System.out.println(Thread.currentThread().getName()+" running...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
运行结果:
main running...
Thread-0 runnig...
Thread-0 runnig...
main running...
main running...
Thread-0 runnig...
main running...
Thread-0 runnig...
main running...
Thread-0 runnig...
实现Runnable接口创建多线程
Java只支持单继承,一个类一旦继承了某个父类,就无法再继承Thread类。因此,推荐使用Runnable接口创建多线程。
Thread类提供另外一种构造方法Thread(Runnable target)
,其中Runnable target
为实现Runnable接口的实例对象,这样创建的线程将调用Runnable接口中的run()
方法作为运行代码,其中Runnable只有一个run()
方法。
class MyThread implements Runnable {
public void run() { //当调用start()方法时,线程从此处开始执行
while(true) {
System.out.println(Thread.currentThread().getName()+" runnig...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class test {
public static void main(String[] args) {
MyThread myThread = new MyThread(); //创建实例对象
Thread thread = new Thread(myThread); //调用Thread(Runnable target)创建线程对象,可修改名字
thread.start(); //开启线程,执行线程中的run()方法
while(true) {
System.out.println(Thread.currentThread().getName()+" running...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
运行结果与上面相同:
main running...
Thread-0 runnig...
Thread-0 runnig...
main running...
Thread-0 runnig...
main running...
Thread-0 runnig...
main running.