一个关于Java多线程的问题

暗河
  • 7

在看某视频课时遇到一个问题:
此刻有店员(clerk)作为共享数据,有一个消费者(customer)与一个生产者(producer)充当两个线程,用以下的代码就可以解决两个对象共用共享数据的问题:

class Clerk{

}

class Producer extends Thread{
    private Clerk clerk;

    public Producer(Clerk clerk){
        this.clerk=clerk;
    }

}

class Consumer extends Thread{
private Clerk clerk;
    public Consumer(Clerk clerk){
        this.clerk=clerk;
    }
}

public class ProductTest {
    public static void main(String[] args) {
        Clerk clerk=new Clerk();

        Producer p1 = new Producer(clerk);
        p1.setName("生产者");

        Consumer c1 = new Consumer(clerk);
        c1.setName("消费者");

        p1.start();
        c1.start();
    }

}

请问这是什么原理...思考了半天没有搞懂...

回复
阅读 725
3 个回答
✓ 已被采纳

java对象是应用传递,你可以看做此时对象是单例的,再怎么操作都是操作同一个对象。

我也没看懂,这不是两个线程共享数据,这就是两个对象共享数据

就是跑起来了之后,可以在不同线程中使用clerk,比如clerk 有很多钱,可以两个线程共同消费,就这意思吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏