gpt4 book ai didi

java - 线程还是单独的对象实例?

转载 作者:行者123 更新时间:2023-12-02 08:21:18 25 4
gpt4 key购买 nike

我关于使用线程的经验法则是:如果同一对象的多个实例需要同时运行,请使用线程。但我在类似于我下面描述的场景中面临着设计选择问题。请帮我一劳永逸地澄清这一点:

<小时/>

(Reusing the example from my previous post)
I have 5 Pen object instances, 100 Author threads, and 3 Paper object instances.
Any number of Authors may be using any number of Pens to write on any given paper.
I have created blocking queue to protect the Pen objects being accessed by Authors.
If all pens in the queue are used, Authors wait.
The Pen instances take data from Author threads and append it to the (specified) Paper instance.
After updating Paper instance, Pen also updates the invoking Author thread.

问题:

  • 运行 Pen 是否有值(value)对象作为线程?
  • 如果是这样,我将如何传递数据作者线程到钢笔线程,以便Pen线程可以执行读取(来自作者),写入(到 Paper),以及回写(返回调用作者线程)安全吗?

最佳答案

我的第一个想法是,作者是 worker (即可能是线程),而笔和纸是资源(即没有线程 - 仅 一些 worker )。

我会重构设计,将功能从笔转移到作者。另外,我会尝试将作者建模为 Callable s(或 Runnable s,如果不需要返回任何结果)而不是线程,并在 Executor 内运行它们框架 - 这提供了更高级别的抽象来使用,从而产生更干净、更安全的代码。

关于java - 线程还是单独的对象实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com