Java学习之多线程(1)

第一篇博客就这样随手记下来了。

在传统的程序语言中呢,运行的顺序总是必须按照程序的流程运行,且一次只能运行一个程序块,但Java的多线程就打破了这种束缚。所谓的线程(Thread)就是指程序的运行流程,多线程机制是指可以同时运行多个程序块,是程序运行效率更高。

在Java中实现多线程操作有两种方法,一是继承Thread类,二就是实现Runnable接口了。

1.继承Thread类

格式:

class 类名 extends Thread{

属性;

方法;

public void run(){

线程主体;

}

}

实际上如果要正确的启动线程,是不能直接调用run()方法的,而应该调用从Thread类中继承而来的start()方法,不然还是属于顺序式的执行方式,这是因为线程的运行需要本机操作系统支持。如果一个类通过继承Thread类来实现,那么就只能调用一次start()方法,如果调用多次将会抛出“IllegalThreadStateException”异常。

如果一个类只能继承Thread类才能实现多线程,那必定受到单继承局限的影响,所以一般实现多线程还可以通过实现Runnable接口完成。

2.实现Runnable接口

格式:

class 类名 implements Runnable{

属性;

方法;

public void run(){

线程主体;

}

}

现在实现的是Runnable接口,但此接口并没有start()方法的定义,那该如何启动多线程呢?实际上,还是要依靠Thread类完成启动,在此类中提供了public Thread(Runnable target)和public Thread(Runnable target,String name)两个构造方法,都可以接收Runnable的子类实例对象,所以就可以以此启动多线程了。

所以,无论使用哪种方式,最终都要依靠Thread类才能启动多线程。

但是实现Runnable接口相对于继承Thread类来说,有着显著的优势:

(1)适合多个程序代码的线程去处理同一资源的情况。

(2)避免由于Java单继承带来的局限。

(3)增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。

所以,在开发中建议使用Runnable接口实现多线程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章