线程的实现方式二
Posted 江小白谢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的实现方式二相关的知识,希望对你有一定的参考价值。
线程实现方式二:
1.自定义一个类实现runnable接口
class Thread implements Runnable
查看源代码,我们可以知道Thread实现了runnable接口
runnable中只有一个run抽象类
2.实现run方法,把自定义线程的任务定义在run方法里面
3.创建一个runnable实现类对象
4.创建Thread方法,并把runnable实现类对象作为实参传过去
Thread的构造方法:
Thread(Runnable target) 分配新的
Thread
对象。
Thread(Runnable target ,String name) 分配新的
Thread
对象并这个可以给线程一个名字
5.并用Thread方法的start方法开启一个线程线程
start方法不是静态的,要实例化对象
疑问1:runnable的实现类是线程类吗?
不是,只有Thread和Thread的子类才是线程对象
rannable的实现类只是是实现了rannable接口的对象而已
疑问2:为什么我们调用Thread的start方法可以执行runnable接口的实现类的run方法呢?
源代码如下:
Thread类的构造方法 public Thread(Runnable target, String name) { init(null, target, name, 0); } Thread类的run方法 public void run() { if (target != null) { target.run(); } } Thread类的target成员变量 private Runnable target;
原来,然后当我们调用Thread的start方法的时候,就调用了Thread的run方法,
而我们传递一个runnable实现类的对象,然后Thread的run方法会调用runnable实现类的run方法
下面是实现runnable接口的实例代码:
public class Demo7 implements Runnable { @Override public void run() { for (int i = 0; i < 50; i++) { System.out.println(Thread.currentThread().getName()+i); } } public static void main(String[] args) { Demo7 demo = new Demo7(); Thread thread = new Thread(demo,"狗娃"); thread.run(); thread.start(); for (int i = 0; i < 50; i++) { System.out.println(Thread.currentThread().getName()+i); } } }
以上是关于线程的实现方式二的主要内容,如果未能解决你的问题,请参考以下文章