1、java.lang包中的Runnable接口只有一个不带参数的run方法,Thread类已经实现了Runnable接口。
2、大多数情况下在实现线程时,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。除非你想修改或增强类的基本行为,否则不应为该类创建子类。
3、通过实现Runnable接口实现线程的步骤:1.定义一个类实现Runnable接口,即在该类中提供run()方法的实现;2.把Runnable的一个实例作为参数传递给Thread类的一个构造方法;3.线程对象调用start方法启动线程,将执行权转交给run()方法。
4、当一个Thread类或其子类的对象被声明并创建时,这个线程对象就处于新建状态,此时系统还没有为它分配资源。(Thread th=new Thread();)
5、就绪状态 ,也叫可执行状态。当一个新创建的线程调用start()方法后便进入了就绪状态。处于就绪状态的线程已经具备了运行条件,将进入线程队列排队,等待系统为其分配CPU,一旦获得了CPU,线程就进入了运行状态,并调用自己的run()方法。(th.start();)
6、运行状态 ,处于就绪状态的线程被调度并获得CPU的处理后便进入到运行状态。每个Thread类及其子类的对象都有一个run()方法,当线程对象被调度执行时,它将自动调用本对象的run()方法。要实现线程的功能,需要在run()方法中给出完成线程功能的操作代码。