本文共 1941 字,大约阅读时间需要 6 分钟。
//规范用法 private Handler handler = new Handler(); private void delayDestroy() { handler.postDelayed(runnable, 2000); } public Runnable runnable = new Runnable() { @Override public void run() { finish(); } }; //关闭此定时器 handler.removeCallbacks(runnable);
斜体样式继承Thread类 和 实现Runnable接口
// 1:创建线程类 (继承自Thread类) class MyThread extends Thread{ // 2:复写run() @Override public void run(){ ... // 定义的线程需要进行的操作 }}// 3:创建线程对象,即 实例化线程类 //MyThread myThread = new MyThread(); MyThread myThread = new MyThread(“线程名称”);// 4:通过线程对象控制线程的状态,如 运行、睡眠、挂起 / 停止// 调用 start()开启线程 myThread.start();
//使用匿名内部类 new Thread("线程名称") { // 复写run() @Override public void run() { //定义的线程需要进行的操作 // 通过 线程对象 控制线程的状态,如 运行、睡眠 、 停止 如Thread.sleep(); }.start();
继承Thread类实现多线程的优缺点:
优点:使用简单
缺点: 存在局限性,必须要继承Thread类,java是单继承的,继承了一个没法在继承另一个; 不合适资源之间的共享:一个线程就是一个实例对象,他们之间是相互独立的 消耗资源;
// 创建线程辅助类,实现Runnable接口 class MyThread implements Runnable{ .... @Override// 复写run() public void run(){ //线程操作 }}// 创建线程辅助对象,即 实例化 线程辅助类 MyThread mThread=new MyThread();/* 创建线程对象,即 实例化线程类;线程类 = Thread类; 创建时通过Thread类的构造函数传入线程辅助类对象 原因:Runnable接口并没有任何对线程的支持,我们必须创建线程类(Thread类)的实例,从Thread类的一个实例内部运行*/ Thread td=new Thread(mThread);// 通过 线程对象 控制线程的状态,如 运行、睡眠、挂起 / 停止// 当调用start()方法时,线程对象会自动回调线程辅助类对象的run(),从而实现线程操作 td.start();
//匿名内部类 Runnable mt = new Runnable() { // 复写run() @Override public void run() { //线程操作 } }; // 创建线程对象,即 实例化线程类;线程类 = Thread类; Thread mt1 = new Thread(mt, "线程1"); // 通过 线程对象 控制线程的状态,如 运行、睡眠、挂起 / 停止 mt1.start();
参考文章:
转载地址:http://ihrii.baihongyu.com/