使用Runnable实现资源共享

本文通过一个Java多线程示例展示了如何实现线程间的资源共享。通过让多个线程操作同一个Runnable实例,使得它们能够共享并修改相同的变量,进而达到资源同步的目的。此方法适用于诸如卖票系统等需要资源同步的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子

  • 原因
    因为使用Runnable只实例化一个对象,然后用Thread来封装这个对象,操作的是这个对象的属性,所以可以一起修改这个属性
  • 代码
public class Test {

    public static void main(String[] args) {

        Demo d = new Demo();
        Thread dd = new Thread(d,"DD1");
        Thread dd2 = new Thread(d,"DD2");
        Thread dd3 = new Thread(d,"DD3");
        dd.start();
        dd3.start();
        dd2.start();
    }

}

public class Demo implements Runnable{
    private int a = 30;
    @Override
    public void run() {

    for(int i = 10;i>1;i--){
    System.out.println("此时i为"+i+"此时a为"+(a++));
        }

    }

}
  • 运行的部分结果为
    时i为10此时a为30
    此时i为9此时a为31
    此时i为8此时a为32
    此时i为7此时a为33
    此时i为6此时a为34
    此时i为5此时a为35
    此时i为4此时a为36
    此时i为3此时a为37
    此时i为2此时a为39
    此时i为10此时a为40
    此时i为9此时a为41
    此时i为8此时a为42
    此时i为7此时a为43
    此时i为6此时a为44
    此时i为5此时a为45
    此时i为4此时a为46
    此时i为10此时a为38
    此时i为9此时a为48
    此时i为3此时a为47
    此时i为8此时a为49
    此时i为2此时a为50
    此时i为7此时a为51
    此时i为6此时a为52
    此时i为5此时a为53
    此时i为4此时a为54
    此时i为3此时a为55
    此时i为2此时a为56
    a的值是他们三个一起改变的,所以实现了资源共享,比如在卖票系统中国可以使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值