多线程三种方法实现以及多线程传参的方法

这里将多线程三种实现方法:1.继承Thread类。2.实现runnable方法。3.线程池。

先说第一种:继承Thread类

为了便于理解,我们假设这样一个场景:我有两只猫,我要给他们同时喂食。

这是猫的类,这个类继承了Thread类

package com.sxj;

public class MyCat extends Thread{
	//名字
	private String name;
	//食物
	private String food;
	
	MyCat(String name,String food){
		this.name= name;
		this.food=food;
	}
	
	@Override
	public void run() {
		for(int i=0;i<100;i++)
			System.out.println("今天我给名字叫"+name+"的猫喂"+food);
	}
}

下面我要给两只猫喂食,代码如下:

@org.junit.Test
	public void main1() {
		MyCat cat1 = new MyCat("英短", "m猫粮");
		MyCat cat2 = new MyCat("中华田园猫", "米饭");

		Thread thread1 = new Thread(cat1);
		Thread thread2 = new Thread(cat2);

		thread1.start();
		thread2.start();

	}

我们看一下输出结果:

 下面将第二种方法,实现Runnable接口。

同样为了便于理解,我们假设我有两只狗,我要给他们投食。

狗的类如下:

package com.sxj;

public class MyDog implements Runnable{
	//狗的名字
	private String name;
	//狗爱吃的食物
	private String food;
	
	MyDog(String name,String food){
		this.name=name;
		this.food=food;
	}

	@Override
	public void run() {
		for(int i=0;i<100;i++)
			System.out.println("今天我给名字叫"+name+"的狗喂"+food);
	}
	
}

投食的方法如下:

@org.junit.Test
	public void main2() {
		MyDog dog1 = new MyDog("哈士奇", "饼干");
		MyDog dog2 = new MyDog("中华田园犬", "米饭");

		Thread thread1 = new Thread(dog1);
		Thread thread2 = new Thread(dog2);

		thread1.start();
		thread2.start();
	}

我们来看下结果:

 

最后一种方法,线程池实现,我们借用给狗投食的场景,狗类我就不写了,上面有,直接写测试方法:

@org.junit.Test
	public void main3() {
		ThreadPoolExecutor ex = new ThreadPoolExecutor(2, 2, 100, TimeUnit.MILLISECONDS,
				new LinkedBlockingDeque<>());
		MyDog dog1 = new MyDog("哈士奇", "饼干");
		MyDog dog2 = new MyDog("中华田园犬", "米饭");
		
		ex.execute(dog1);
		ex.execute(dog2);
	}

看以下实验结果:

 好了,以上就是用三种方法实现多线程。同时每种方法都给出了具体的传参的方式,主要就是通过有参构造函数传值。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值