关于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();
			}
			 
	     }
	}
}

输出结果显示:

java 多线程项目 java项目中多线程的应用_thread

....

无尽的往下输出....

注意:虽然我们在这里调用的是start()方法,但是实际上调用的还是run()方法的主体。

那么:为什么我们不能直接调用run()方法呢?

我的理解是:线程的运行需要本地操作系统的支持。

但是这种方法有它的弊端,拿本例子来说,ClockThread如果有其他的父类,那么此种方法就不能用。因为Java中不允许同时拥有几个父类。所以,实现多线程一般用第二种方法。下面介绍下一种方法:

通过实现Runnable接口,大致框架是:

class 类名 implements Runnable{ 
方法1; 
方法2; 
… 
public void run(){ 
// other code… 
} 
属性1; 
属性2; 
… 
  
}

详细地介绍这种方法打算结合Android中Handler的用法~打算整合到下篇日志中...