创建线程的方式二

14 篇文章 0 订阅

创建线程的方式有两种:一种是继承Thread类,一种是实现Runnable接口

  1. 实现Runnable接口创建线程对象
    步骤:
    1. 定义Runnable接口的实现类,并重写该接口的run方法,该run方法的方法体同样是该线程的线程执行体
    2. 创建Runnable接口实现类的实例,并以此实例作为Thread类的target来创建Thread类的对象,该Thread类的对象才是真正的线程对象
    3. 调用线程对象的start()方法来启动新线程
    代码:
// 实现Runnable接口实现类 实现了两个
package com.zhiyou100.thread.demo06;
// 1.定义一个Runnable接口的实现类
public class Demo02RunnableImpl implements Runnable{
	// 2.在实现类中重写Runnable接口当中的run方法,设置线程任务。
	@Override
	public void run() {
		// 循环20次,打印循环的次数
		for (int i = 0; i < 20; i++) {
			System.out.println(Thread.currentThread().getName() + "--->" + i);
		}
	}	
}

package com.zhiyou100.thread.demo06;
public class Demo03RunnableImpl implements Runnable{
	@Override
	public void run() {
		
		for (int i = 0; i < 20; i++) {
			System.out.println("hello World" + i);
		}	
	}
}
package com.zhiyou100.thread.demo06;
/*
 *  创建多线程程序的第二种方式:实现Runnable接口
 *  java.lang.Runnable:
 *      Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。 
 *  lang.lang.Thread:
 *      Thread(Runnable target): 分配新的Thread类的对象
 *      Thread(Runnable target,String name):分配新的Thread类的对象
 *  实现步骤:
 *  	1.定义一个Runnable接口的实现类
 *      2.在实现类中重写Runnable接口当中的run方法,设置线程任务。
 *      3.创建Runnable接口实现类的对象
 *      4.构建Thread类的对象,在构造方法中传递Runnable接口的实现类对象
 *      5.调用Thread类中的start方法,开启新线程执行run方法    
 *   实现Runnable接口创建多线程程序的好处:
 *   	1.避免了单继承的局限性
 *   		一个类只能直接继承一个父类,类继承了Thread类就不能继承其他的类
 *          实现Runnable接口,还可以继承其他的类,还可以实现其他的接口
 *      2.增强了程序的扩展性,降低了程序的耦合性(解耦)
 *        实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离(解耦)
 *        实现类中,重写了run方法:用来设置线程的任务
 *        创建Thread类的对象,调用start方法:用来开启新的线程     
 *      
 */
public class Demo01Runnable {

	public static void main(String[] args) {
		//3. 创建Runnable接口实现类的对象
		Runnable target = new Demo02RunnableImpl();// 多态写法
		//4. 构建Thread类的对象,在构造方法中传递Runnable接口的实现类对象
		Thread thread = new Thread(target);
		//5. 调用Thread类中的start方法,开启新线程执行run方法
		thread.start();

		Thread thread2 = new Thread(new Demo03RunnableImpl());
		thread2.start();
		for (int i = 0; i < 20; i++) {
			System.out.println(Thread.currentThread().getName() + "--->" + i);
		}
	}
}
  1. 注意:
    通过实现Runnable接口,是得该类有了多线程类的特征,run方法是多线程程序的一个执行目标,所有的多线程代码都写在run()方法中,Thread类实际上也是实现了Runnable接口的类
    在启动的多线程的时候,需要先通过Thread类的构造方法Thread(Runnable target)构建线程对象,然后调用Thread类对象的start方法来运行多线程程序
    备注:Runnable对象仅仅作为Thread类的对象的target,Runnable实现类包含了run方法作为线程的执行体。而实际的线程对象依然是Thread类的实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值