我的问题与读者有关。例如,假设有一个包含1000条记录的文件,块 大小为100,线程数为4。因此,在这种情况下,将有10个块,每个线程为 给定一个开始的块,当其完成时,剩余的块将分配给线程,并在 在一个时间点,只有4个块将由4个线程处理。但是线程如何决定哪些数据 读书?假设第一个线程已经在处理100条记录,那么第二个线程怎么知道 它不应该选择相同的记录并查找未选择其他线程的记录。
在这种情况下,将会有一个Reader和writer的单个实例,它们在 线程?如果是,那么任何类级别的资源都不是线程安全的吗?
谢谢
答案 0 :(得分:0)
但是线程如何决定读取哪些数据?
这是未定义的。将以不确定的顺序读取项目。这就是为什么当记录之间的读取顺序很重要时,使用多线程步骤不是一个好主意的原因。
在这种情况下,线程之间将共享Reader和writer的单个实例吗?如果是,那么任何类级别的资源都不安全吗?
是的,这些将在线程之间共享。每个读取器/写入器的Javadoc都会提及该读取器/写入器是否是线程安全的。
有关更多详细信息,请参考参考文档的Multi-threaded Step部分。