线程内容的放置。你怎么知道线程里面有什么,什么没有?

Placement of Thread Content. How do you know what goes inside of the thread, and what doesn't?

总的来说,这是一份研究生水平的家庭作业class,省略了很多作业,但我认为我给出的足够让我的问题清楚了。总之提示如下

提示:

假设您有一组文件 (file_0...file_N) 由一组线程 (thread_0...thread_m 访问).
还有一个 sharedstatus table 指示每个文件的状态(关闭、打开以供读取、打开以供写入)。当一个线程需要访问一个文件时,它必须首先 通过状态 table 检查文件的状态。 以下是选项:

如果文件已关闭,则立即授予访问权限。

如果文件打开进行写入,线程必须在队列中等待该文件。

如果文件打开以供读取并且新请求也是读取,则该文件的读取计数器会增加并授予访问权限。

如果文件打开用于读取并且新请求用于写入,线程将被放置在队列中以访问该文件。

使用 Lock 变量同步访问状态 table。状态 table 应该实现为 class;因此,线程必须在调用状态之前获得锁 table 方法。实际状态 table 可以用数组或 ArrayList 实现,其中元素是具有与单个文件相关的属性(状态、读取计数等)的对象。

结束提示

现在,鉴于此,我被困在哪里?我假设我们至少需要一个主线程、一个线程 table 和一个线程 class。我通常更喜欢保持 main 干净,所以我使用第四个 class 来完成大部分工作,并简单地让 main 引用它。

主要问题是所有这些是如何构建的?我多次尝试构建它,到目前为止,所有这些都导致了冲突,或者根本没有意义的事情。我当前的迭代包含主要功能 class 中的所有内容,但线程是空的,留下几乎一个 class 带有封装变量,另一个带有内容。

更简洁地说,这是我的问题。

你可能需要一个 ReadWriteLock 来完成你被要求做的大部分事情。

Where would the deciding logic be for a read/write operation? Inside or outside of the thread?

每个线程必须使用锁来锁定它需要的资源,这样逻辑就在线程中(或者使用线程使用的其他东西)。

Where would actually reading the file occur? Inside or outside of the thread?

在线程中 - 在您锁定资源之后。

What, in general, would go into a thread in regards to this type of programming?

只有属于那里的东西 - 没有别的:)

What exactly do I NOT put into a thread?

UI(用户界面)代码。