关于Thread多线程一直没太接触过,今天学了一些,分享一下~
在Java中要想实现多线程,有两种手段,一种是继承Thread类,另外一种是实现Runable接口。
对于直接继承Thread类来说,代码大致框架是:
class 类名 extends Thread{ 方法1; 方法2; … public void run(){ // other code… } 属性1; 属性2; … }
下面通过一个简单小例子帮助理解~
时钟每隔1s输出一次:
import java.util.Date; public class ClockThreadTest { public static void main(String[] args) { ClockThread clockThread=new ClockThread(); clockThread.start(); System.out.println("End"); } } class ClockThread extends Thread{ @Override public void run() { super.run(); while(true){ System.out.println(new Date()); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
输出结果显示:
....
无尽的往下输出....
注意:虽然我们在这里调用的是start()方法,但是实际上调用的还是run()方法的主体。
那么:为什么我们不能直接调用run()方法呢?
我的理解是:线程的运行需要本地操作系统的支持。
但是这种方法有它的弊端,拿本例子来说,ClockThread如果有其他的父类,那么此种方法就不能用。因为Java中不允许同时拥有几个父类。所以,实现多线程一般用第二种方法。下面介绍下一种方法:
通过实现Runnable接口,大致框架是:
class 类名 implements Runnable{ 方法1; 方法2; … public void run(){ // other code… } 属性1; 属性2; … }
详细地介绍这种方法打算结合Android中Handler的用法~打算整合到下篇日志中...