приоритетное обновление файловых данных и многопоточность в Java - PullRequest
0 голосов
/ 07 сентября 2018

Я не хочу изменять файл, используя несколько потоков в любой момент времени, учитывая ограничения,

  • каждый поток имеет приоритет, нормальный или максимальный.

  • файл содержит таблицу (скажем, оценки учащихся (имя, номер ролика) по определенному предмету).

  • любая строка, которая может быть изменена потоком с обычным приоритетом, может быть позже изменена любым потоком.
  • после изменения строки потоком с максимальным приоритетом потоки с обычным приоритетом не могут изменить эту конкретную строку.

планирование потоков для доступа к файлу выполнимо, но ограничить некоторые строки от модификации некоторыми потоками довольно сложно для меня. Как я могу выполнить вышеупомянутую задачу в Java? пожалуйста, ответьте на мой вопрос, учитывая, что я очень плохо знаком с Java, многопоточность / параллельное программирование и анализ файлов в Java. заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Согласно моему пониманию, дизайн может быть:

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
   }
0 голосов
/ 08 сентября 2018

Корректное управление одновременным изменением определенных строк в файле может быть особенно трудным, учитывая, что вы новичок в параллелизме в Java.

Если файл не слишком большой, может быть проще прочитать его в стандартную структуру данных (см .: https://docs.oracle.com/javase/8/docs/api/index.html?java/util/concurrent/package-summary.html), которая обеспечивает гарантированные атомарные операции, или создать собственную структуру данных и реализовать синхронизированный метод для обновления этой структуры данных.

...