继承runable是实现多线程

12 篇文章 0 订阅
3 篇文章 0 订阅

继承runable是实现多线程

  • 创建自己得到runable类继承runable接口重写run方法
    用自己的runable类实例化后的对象用于用于实例化新的线程
  • 话不多看代码先
    继承runable接口的代码
package myrunable;

public class MyRunable implements Runnable{
	private static int ii = 10;
	@Override
	public  void run() {
		while(true) {
     //synchronized保证不会出现时间碎片也就是说在保证一个线程执行的情况下资源是锁死的
				synchronized(this) {
					if(ii>0) {
					System.out.println(Thread.currentThread().getName()+"正在运行---"+ii);
					ii--;
					}
				}
		}
	}
}

创建多线程

package myrunable;  
public class Deno{  
    public static void main(String[] args) throws InterruptedException{  
    //先实例化一个runable对象my
    //相当于实例化一个公共的资源
    	MyRunable my = new MyRunable();
    	//用runable实例化后的对象实例化新的线程  
    	//所有新的线程共用一个资源my
        Thread td1 = new Thread(my,"a");  
        Thread td2 = new Thread(my,"b");  
        Thread td3 = new Thread(my,"c");  
        td1.start();
        td2.start();
        td3.start();
    }  
}

  • 运行结果
    在这里插入图片描述

  • 总结
    上一篇讲的是继承thread类来实现多线程这篇是通过继承runable接口实现多线程
    个人认为实现多线程的本质方法还是thread类
    这个俩种实现方式有何不同呢
    通过继承thread类实现的多线程
    每个线程的资源相互没有关系
    通过继承runable接口实现的多线程
    所有线程公用一个资源体

    举个简单的例子吧
    thread实现的多线程像是一条街上的许多小商贩
    他们同时都在卖东西
    但是各不相干,各卖各的东西
    而runable实现的多线程享像是一个连锁店
    他们也是都在同时卖东西
    但是他们的货源是相同的,每个店消耗的都是整体的货源

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值