在给定约束的情况下,我不会在任何给定时间使用多个线程修改文件
每个线程的优先级为正常或最大。
文件包含一个表格(说出特定学科的学生(姓名,卷编号)标记)。
安排线程访问文件是可行的,但是限制某些行被某些线程修改对我来说是相当困难的。 我如何在Java中完成上述任务? 请考虑我对java,多线程/并发编程和java中的文件解析非常陌生的问题,回答我的问题。 提前致谢。
答案 0 :(得分:0)
根据我的理解,设计可以是:
class ToothBrushHolder{
List<ToothBrush> toothBrushList;
ToothBrush pickToothBrush{
ToothBrush:pick the tooth brush from list
}
void useToothBrush(ToothBrush toothBrush){
synchronize(toothBrush){
if(toothBrush.getLastUsedBy!= "particularThreadName"){
//perform the action
toothBrush.setLastUsedBy("ThreadName);
}else
{ can't use brush
}
}
}
class ToothBrush{
String ToothBrushID;
String LastUsedBy;//setThreadname
}
答案 1 :(得分:-1)
鉴于您不熟悉Java并发,因此正确控制文件中特定行的并发修改可能特别困难。
如果文件不是太大,可能更容易将其读入提供有保证的原子操作的标准数据结构(请参阅:https://docs.oracle.com/javase/8/docs/api/index.html?java/util/concurrent/package-summary.html),或者创建自己的数据结构并实现同步方法用于更新该数据结构。