java线程 — 创建和启动线程

创建和启动线程,传统有两种方式:

方式1:继承Thread类;

方式2:实现Runnable接口;

线程类(java.lang.Thread):Thread类和Thread的子类才能称之为线程类。阅读API

main方法就是一个主线程

 

方式1:继承Thread类

步骤

1. 定义一个类A继承于java.lang.Thread类。

2. 在A类中覆盖Thread类中run方法。

3. 我们在run方法中编写需要执行的操作---->run方法里的,线程执行体

4. 在main方法(线程)中,创建线程对象,并启动线程。

  创建线程类对象: A类 a = new A类();

  调用线程对象的start()方法: a.start();//启动一个线程

注意:千万不要调用run方法,如果调用run方法好比是调用一个方法。依然还是只有一个线程,并没有开启新的线程。

方式2:实现Runable接口

步骤:

1. 定义一个类A实现于java.lang.Runnable接口,注意A类不是线程类。

2. 在A类中覆盖Runnable接口中的run方法。

3. 我们在run方法中编写需要执行的操作---->run方法里的,线程执行体

4. 在main方法(线程)中,创建线程对象,并启动线程。

  创建线程类对象: Thread t = new Thread(new A()); Thread构造器,需要Runnable对象/Runable实现类对象

  调用线程对象的start()方法: a.start();//启动一个线程

使用匿名内部类来创建和使用线程:

只适用于某一个类只使用一次的情况

getName() //获取构造器名称

使用Thread(String name) //构造器设置构造器名称(还有其他构造器也可设置构造器名称,继承方式中)

static Thread currentThread() //返回对象当前正在执行的线程对象的引用(实现方式中)

例:String name = Thread.currentThread().getName();

继承方式和实现方式的区别

继承方式

  1. Java中类是单继承的,该类如果继承了Thread类,那么就不能再有其他的直接父类了。

  2. 从操作上分析,继承方式更简单,获取线程名字也简单。

  3. 从多线程共享同一个资源上分析,继承方式不能做到。

实现方式:

  1. Java中类可以实现多接口,此时该类还可以继承其他类,并且还可以实现其他接口。

  2. 从操作上分析,实现方式稍微复杂点,获取线程名字也比较复杂,得使用Thread.currentThread()来获取当前线程的引用。

  3. 从多线程共享同一个资源上分析,实现方式可以做到。

posted @ 2017-01-15 17:19  wenxudong  阅读(324)  评论(0编辑  收藏  举报