Многопоточность и параллелизм. Изучение способов построения многопотоковых приложений

Страницы работы

Содержание работы

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение

Новосибирский государственный технический университет

Кафедра вычислительной техники

Лабораторная работа № 7

по дисциплине «ООП»

Тема: Многопоточность и параллелизм

Группа: АВТ-910

Студенты: Соловьев Н. О.

Преподаватель:

Малявко А. А.

Новосибирск 2012

Цели работы:

1.  Изучить и освоить способы построения многопотоковых приложений.

2.  Освоить базовые средства и возможности синхронизации потоков.

3.  Изучить расширенные по сравнению с базовыми возможности пакета java.util.concurrent и его подпакетов:

-  фреймворк Executor, пулы потоков;

-  средства блокировки;

-  атомарные операции;

-  расширенные средства синхронизации потоков;

Порядок выполнения работы:

Ориентируясь на собственный вариант задания на курсовую работу и используя результаты предыдущих лабораторных работ:

1.  Определить набор задач, которые должны исполняться параллельно при работе приложения, например:

-  отрисовка элементов графического интерфейса пользователя;

-  ввод/вывод данных о настройке приложения;

-  сериализация/десериализация;

-  основные расчеты;

-  ….

2.  Выбрать наиболее подходящий для каждой задачи способ ее создания и запуска.

3.  Спланировать расписание запуска задач, разработать и реализовать создание соответствующих задач и запуск их на выполнение.

4.  Определить перечень объектов приложения, через которые осуществляется передача данных между каждой парой взаимодействующих потоков.

5.  Разработать и реализовать безопасные алгоритмы взаимодействия всех задач в приложении.

Требования к содержанию отчета:

Отчет готовится в электронном виде и должен содержать:

-  цель работы;

-  описание разработанной иерархии классов и интерфейсов заданной предметной области;

-  листинги классов и интерфейсов;

-  документацию, подготовленную с использованием утилиты javadoc;

-  выводы и заключение.

Листинг программы:

1)  Написание исходного кода переопределенного интерфейса Runnable – myRunnable и загрузки файла, использовавшего данный интерфейс

class myRunnable implements Runnable

      {

      Thread thisThread;

      public void run()

      {

             JFileChooser open = new JFileChooser();

             int integ =  open.showOpenDialog(GUIMainForm.this);

        if (integ == JFileChooser.APPROVE_OPTION) {

                   try {

                          File file = open.getSelectedFile();

                          ArrayList<Product> arrlist;

            FileInputStream infile = new FileInputStream(file);

            ObjectInputStream inobj = new ObjectInputStream(infile);

                          arrlist = (ArrayList<Product>)inobj.readObject();

                          for (Product pr : arrlist)

                      listProduct.add(pr);

                   reloadList();   

                   } catch (ClassNotFoundException e) {

                          // TODO Auto-generated catch block

                          e.printStackTrace();

                   } catch (IOException e) {

                          // TODO Auto-generated catch block

                          e.printStackTrace();

                   }

        }

      }

      }

Button buttonOpen = new Button("Open...");

              buttonOpen.addMouseListener(new MouseAdapter() {

                   @Override

                   public void mouseClicked(MouseEvent arg0) {

                         Thread mR = new Thread(new myRunnable());

                         mR.start();

                         mR = null;

                   }

              });

2)  Написание исходного кода переопределенного класса Thread – myThread и сохранение файла, использовавшего данный класс:

class myThread extends Thread

      {

             public void run()

             {

                   JFileChooser save = new JFileChooser();

             int integ =  save.showSaveDialog(GUIMainForm.this);

            if (integ == JFileChooser.APPROVE_OPTION) {

                          try {

Похожие материалы

Информация о работе