Java创建多线程

继承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.

猜你喜欢

转载自blog.csdn.net/weixin_41656968/article/details/81254427