Java中基于优先级的文件数据更新和多线程

时间:2018-09-07 20:56:24

标签: java multithreading fileparsing

在给定约束的情况下,我不会在任何给定时间使用多个线程修改文件

  • 每个线程的优先级为正常或最大。

  • 文件包含一个表格(说出特定学科的学生(姓名,卷编号)标记)。

  • 可以由普通优先级线程修改的任何行,以后都可以由任何线程修改。
  • 一旦最大优先级线程修改了一行,普通优先级线程就无法修改该特定行。

安排线程访问文件是可行的,但是限制某些行被某些线程修改对我来说是相当困难的。 我如何在Java中完成上述任务? 请考虑我对java,多线程/并发编程和java中的文件解析非常陌生的问题,回答我的问题。 提前致谢。

2 个答案:

答案 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),或者创建自己的数据结构并实现同步方法用于更新该数据结构。