我wan't给定的约束在任何给定时间来修改使用多线程的文件
调度线程访问文件是可行的,但限制从某些线程正在修改一些线是相当困难的我。我怎么能做到以上java的任务是什么?请回答我的问题考虑我很新在Java的Java,多线程/并发编程和文件的解析。提前致谢。
按我的理解的设计可以是:
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
}
正确控制文件中的特定行并发修改可能会特别困难,因为你是新来的Java并发。
如果文件不是太大,可能更容易读取到的标准数据结构(参见:https://docs.oracle.com/javase/8/docs/api/index.html?java/util/concurrent/package-summary.html),提供保证原子操作,或者创建自己的数据结构和实施用于更新数据结构的同步方法。