14.2.2多线程实现----Runnable接口实现多线程

使用Thread类的确可以方便地实现多线程,但是这种方式最大的缺点就是单继承局限。为此在java中也可以利用Runnable接口来实现多线程,此接口的定义如下。

@FunctionalInterface              //从JDK1.8引入了Lambda表达式后就变为了函数式接口
public interface Runnable {
       public void run();
}

Runnable接口从JDK1.8开始成为一个函数式的接口,这样就可以在代码中直接利用Lambda表达式来实现线程主体代码,同时在该接口中提供有run()方法进行线程执行功能定义。

范例:通过Runnable接口实现多线程。

public class MyThread306 implements Runnable {
    private String title;
    
	
	public String getTitle() {
		return title;
	}


	public void setTitle(String title) {
		this.title = title;
	}

    
	public MyThread306(String title) {
		super();
		this.title = title;
	}


	@Override
	public void run() {
		for(int x=0;x<10;x++) {
			System.out.println(this.title+"运行,x="+x);
		}

	}

}

利用Thread类定义的线程类可以直接在子类继承Thread类中提供start()方法进行多线程的启动,但是一旦实现了Runnable接口则MyThread306类中将不再提供start()方法,所以为了继续使用Thread类启动多线程,此时就可以利用Thread类中的构造方法进行线程对象的包裹。
Thread类构造方法:public Thread(Runnable target)。
在Thread类的构造方法中明确的接收Runnable子类对象,这样就可以使用Thread.start()方法启动多线程。

范例:启动多线程

public class ThreadDemo306 {
      public static void main(String[] args) {
    	  Thread threadA=new Thread(new MyThread02("线程A"));
    	  Thread threadB=new Thread(new MyThread02("线程B"));
    	  Thread threadC=new Thread(new MyThread02("线程C"));
    	  threadA.start();      //启动多线程
    	  threadB.start();      //启动多线程
    	  threadC.start();      //启动多线程
    	  
	}
}

执行结果

线程B运行,x=0
线程B运行,x=1
线程B运行,x=2
线程A运行,x=0
线程A运行,x=1
线程A运行,x=2
线程A运行,x=3
线程A运行,x=4
线程A运行,x=5
线程A运行,x=6
线程C运行,x=0
线程C运行,x=1
线程C运行,x=2
线程C运行,x=3
线程C运行,x=4
线程C运行,x=5
线程C运行,x=6
线程C运行,x=7
线程C运行,x=8
线程C运行,x=9
线程A运行,x=7
线程A运行,x=8
线程B运行,x=3
线程B运行,x=4
线程B运行,x=5
线程B运行,x=6
线程B运行,x=7
线程B运行,x=8
线程B运行,x=9
线程A运行,x=9

本程序利用Thread类构造了3个线程类对象(线程的主体方法由Runnable接口子类实行),随后利用start方法分别启动3个线程对象并发执行run()方法。
范例:通过Lambda表达式定义线程方法体

package cn.mldn.demo;
public class ThreadDemo {
	public static void main(String[] args) {
		for (int x = 0; x < 3; x++) {
			String title = "线程对象-" + x;
			new Thread(() -> {// Lambda实现线程体
				for (int y = 0; y < 10; y++) {
					System.out.println(title + "运行,y = " + y);
				}
			}).start();	// 启动线程对象
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值