Java中实现多线程有两种手段:

  • 继承Thread类(此类为多线程的操作类),而且必须明确地重写Thread类中的run()方法,此方法为线程的主题
  • 实现Runnable接口

Thread类和Runable的区别:

  • Thread不适合多个线程共享资源,而实现了Runable接口,就可以方便地实现资源的共享
  • Thread类其实也是Runnable接口的子类,Thread类中的run()方法其实由Runnable子类完成的,这就是为什么继承Thread类必须明确地重写Thread类中的run()方法(这里其实用到了代理模式)

Thread类:

  • 如果一个类通过继承Thread类来实现,那么只能调用一次start()方法,如果调用多次,则会抛出IllegalThreadStateException异常。
  • start() 方法里真正调用的是start0()方法,此方法在声明处使用了native关键字声明,此关键字表示调用本机的操作系统函数,因此多线程的实现需要依靠底层操作系统支持。

Runnable接口:

  • 实现Runnable接口必须重写Runnable中的run()方法
  • 线程的启动还是要依靠Thread类,需要使用Thread构造方法public Thread(Runable target)或者public Thread(Runnable target,String name)实例化Thread类对象后调用对象的start()方法来启动线程。
05-16 02:02