创建线程方法二——实现Runnable接口
问题来源:
如果仍然继承Extends类,
如果一个程序中有多个线程同时需要共享数据,
共享数据可以把他定义成静态,但是这样, 他的生命周期会很长, 不建议;
因此可以定义一个线程, 并让这个线程都去开启执行start(), 然而这样做是没有意义的,
就会提示线程状态出错, 因为已经运行的程序不需要再次开启的, 所以继承Extends类就不太靠谱了,
所以,采用创建线程的第二种方法, 声明实现Runnable接口的类,
原理:
Runnable接口应该由那些打算通过某一线程执行这个实现Runnable接口的类的实例来实现。
他为非Thread子类的类(执行这个实现Runnable接口的)提供了一种激活方式。
Runnable接口中的抽象方法只有一个run(),
这个run()的作用:将需要执行另一条路径的代码(明确要运行什么代码)存储在这里,
然后实现Runnable接口的类的对象,创建一个线程,
启动该线程将导致在独立执行的线程中执行这个对象的run方法,
那如何来创建这个线程呢?
通过创建Thread类的对象,来调用这个有参的构造方法
,
在thread的构造函数中,就有这个那么就在new thread对象的同时, 就指定run方法所属对象 , 这样就ok了。
|