java多线程的api_Java多线程:实现API接口创建线程方式详解

先看例子:

/**实现Runnable接口创建线程步骤:

* 1、创建一个实现Runnable接口的类

* 2、重写Runnable类中抽象的run()方法

* 3、创建实现类的对象

* 4、声明Thread类,同时将实现类对象作为参数传递

* 5、用Thread类的对象调用start()

*/

//例子:多线程售票(暂未安全同步)

class MyThread implements Runnable{

private int num = 100;

public void run(){

while (true){

System.out.println(Thread.currentThread().getName()+"票号:"+num--);

if(num == 0)

break;

}

}

}

public class ThreadTest2 {

public static void main(String[] args) {

//m相当于是提供了线程所要执行的run(),所以可以供不同线程调用

MyThread myThread = new MyThread();

//将Runnable实现类的对象传递给Thread类中的Runnable类型的属性,由此调实现用

Thread t = new Thread(myThread);

Thread t1 = new Thread(myThread);

Thread t2 = new Thread(myThread);

//设置线程名

t.setName("窗口1:");

t1.setName("窗口2:");

t2.setName("窗口3:");

//通过调用start执行myThread对象的run(),实现三个线程共用一个方法,但是对象始终只有一个,记录票数的子类也只有一个

t.start();

t1.start();

t2.start();

}

}

解析:

通过源码发现Thread类也实现了Runnable接口,通过所以此创建实例的过程是一个Runnable的实现类对象(myThread),传递给另一个Runnable实现类对象(t、t1、t2)的过程,而Thread类中还定义了个Runnable类型的属性,用于配合接收Thread类的带参构造器传递过来的Runnable类型的对象,现在对象有了,要调用什么姿势还不是拍拍屁股的事情?

补充:忽略安全同步问题,例子实现了多线程售票,可以看出start()方法负责开启线程并调用负责线程执行内容的run()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值