Android应用开发之Java基础篇——线程
2010-10-14 06:18:00 来源:本站整理public class TestRunnable implements Runnable {
private String title;
public TestRunnable(String title) {
this.title = title;
}
public void run() {
for ( int i = 0; i < 100; i++ ){
System.out.println(title + i);
Thread.yield();
}
}
public static void main(String[] argv) {
for( int i = 0; i < 20; i++ )
{
new Thread(new TestRunnable(i + ": ")).start();
}
}
}
在这个例子中我们可以看到TestRunnable类实现了Runnable接口——定义了run方法。然后以TestRunnable对象为参数调用Thread类的构造函数,并开始执行。通过这种方法创建了20个线程,通过打印可以看到和上例的运行结果差不多。
我们对比这两种创建线程方法我们发现,前者继承自Thread类(Thread实现了Runnable接口),并改写了run方法(Runnable接口),这种方法更为直接,更易于理解;后者,可以理解成Thread类中聚合了一个Runnable对象。那么什么时候使用后者这种方法来实现线程呢?为什么不使用前者来创建线程呢,这种简单明了的方式来定义线程呢。这里面涉及到Java的一个语言特性,Java不支持多继承,支持单继承。但是Java支持实现多个接口。这样当一个类已经继承自某个父类,并需要在线程中调用的时候,就需要用后者这种方式来实现了,不能再继承自Thread类来实现线程了(已经有父类了)。只需要在这个类中实现Runnable接口,然后再用这个类的对象既可构造出线程来。
下面介绍一下Thread类中的重要方法。
1、join方法:这个方法可以阻塞当前线程(调用join方法的线程),直到对应的线程执行结束。可以理解成当前线程等待另外一个线程执行完成。
2、sleep方法:当前线程被阻塞相应的时间。
3、yield方法:当前线程放弃调度权给其他线程。
4、start方法:线程开始运行。
5、setPriority方法:设置当前线程的优先级。提高线程优先级将会被调度程序优先调度。请注意这个只是对调度程序的一个建议,具体结果由调度程序的实现决定。
6、静态currentThread方法:将会返回当前正在执行线程对象,可以在运行期对其属性进行一些修改。
更多精彩
赞助商链接