小白成长记——Android进阶之线程thread的两种实现

Android有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口。

创建线程:

1.继承Thread类:

public class ThreadActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.thread);
        MyThread thread = new MyThread();
        thread.start();
    }

    public class MyThread extends Thread {
        @Override
        public void run() {
            System.out.print("thread run");
        }
    }
}

2.实现Runnable接口:

public class ThreadActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.thread);
        MyRunnable runnable = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.start();
    }

    public class MyRunnable implements Runnable {
        @Override
        public void run() {
            System.out.print("runnable run");
        }
    }
}

可以看出,实现Runnable接口的方法最终也是需要通过Thread类的start方法来开启线程。

3.简单实现:

//无参构造函数,直接重写run方法创建Thread对象并调用start方法
        new Thread() {
            @Override
            public void run() {
                System.out.print("Thread run");
            }
        }.start();
        //带Runnable参数的构造函数,创建Thread对象并调用start方法
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.print("Runnable run");
            }
        }).start();
    }
可以直接写在Oncreate方法中

事实上,查看源码我们可以看到Thread类本身就实现了Runnable接口

public class Thread implements Runnable 


两种方式对比:

理论上只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是Java中一个类只能继承一个父类,这是这种方式的局限性,后者只需要实现一个接口而已,Java中可以实现多个接口。



你可能感兴趣的:(Android进阶)