【First step to the last one】JAVA多线程整理(一)

来源:互联网 发布:域名代理商源码 编辑:程序博客网 时间:2024/05/16 11:30

㈠新建线程

在java中,新建线程有两种方式:继承Thread类、实现Runnable接口。这两种方式都需要重写run()方法。

(1)继承Thread类:

class Test_1 extends Thread{@Overridepublic void run(){System.out.println("extends Thread");}}
(2)实现Runnable接口:

class Test_2 implements Runnable{@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("Implements Runnable");}}

注:Thread本身就实现了Runnable接口,Java中只能但继承,但可以实现多个接口,所以推荐使用实现Runnable接口的方式来新建线程

㈡启动线程

新建线程分为两种方式,启动线程时也需要分为两种方式。要启动线程,就要调用线程的start()方法,这样处于启动状态下的线程就会执行线程中run()方法里的代码。

(1)继承Thread类的启动方法(新建线程如上,如下代码直接引用):

public static void main(String[] args){Test_1 t1 = new Test_1();     //创建本类对象t1.start();                   //启动线程}
(2)实现Runnable接口的启动方法:

public static void main(String[] args){Test_2 t2 = new Test_2();     //定义本类对象Thread td = new Thread(t2);   //定义线程对象td.start();                   //驱动线程}
注:初学者可能会提出疑问:既然线程中的run()方法才是真正实现线程逻辑的,那么为什么在启动线程时直接调用run()方法呢?

这里需要注意,调用线程的start()方法,与直接调用run()函数,在某些情况下运行结果可能相同,但是本质上截然不同的。start()方法虽然启动了线程,但是一个线程要真正工作起来需要很多约束条件,并不是马上就会执行,只是处于就绪状态,线程需要等待CPU的进程调度机制,它的状态才会由就绪状态转换为执行状态。run()是表示线程的运行,是线程对象的一个方法,是线程执行时具体的代码逻辑,调用run()方法并不是启动线程的标志。



0 0
原创粉丝点击