多线程的实现方式

    技术2022-07-10  115

    方式一:继承Thread

    public class MyThread1 extends Thread{ //这是一个线程,它的任务是实现打印0到50 @Override public void run() { for(int i=0;i<=50;i++){ System.out.println(i); } } }

    定义一个类去继承Thread类,将线程的执行体重写入父类的run()方法,然后在主线程(main函数)中调用子类的start()方法,则线程启动

    public class test { public static void main(String[] args) { MyThread1 myThread1=new MyThread1(); //定义线程1 MyThread2 myThread2=new MyThread2(); //定义线程2 myThread1.start(); //开启线程1 myThread2.start(); //开启线程2 } }

    这里既继承了父类,又重写父类方法,又定义子类对象,比较繁杂。因此可以直接使用匿名构造类简化代码(以上两段代码合二为一)

    public class test { public static void main(String[] args) { //线程1部分 new Thread(){ //打印0到50 //重写run()方法,设置线程1的任务。 @override public void run(){ for(int i=0;i<=50;i++){ System.out.println(i); } } }.start(); //线程2部分 new Thread(){ //打印100到150 //重写run()方法,设置线程1的任务。 @override public void run(){ for(int i=100;i<=150;i++){ System.out.println(i); } } }.start(); //线程3部分 ....... } }

    方式二:实现Runable接口

    public class MyRunnable implements Runnable{ @Override public void run() { for (int i = 0; i < 20; i++) { //输出线程名字二十次 System.out.println(Thread.currentThread().getName()+" "+i); } } }

    定义一个类实现Runable接口,将线程的执行体重写入run()方法。

    public class Demo { public static void main(String[] args) { //创建自定义类对象 线程任务对象 MyRunnable mr = new MyRunnable(); //创建线程对象,并将线程命名为线程一号 Thread t = new Thread(mr, "线程一号"); t.start(); for (int i = 0; i < 20; i++) { //这是主线程的任务 System.out.println("线程二号 " + i); } } }

    同样可以使用匿名内部类简化代码书写

    public class NoNameInnerClassThread { public static void main(String[] args) { Runnable r = new Runnable(){ public void run(){ for (int i = 0; i < 20; i++) { System.out.println("线程一号:"+i); } } }; new Thread(r).start(); } }

    还可以更简单:

    public class NoNameInnerClassThread { public static void main(String[] args) { new Thread(new Runnable(){ public void run(){ for (int i = 0; i < 20; i++) { System.out.println("线程一号:"+i); } } }).start(); } }
    Processed: 0.015, SQL: 9