Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многопоточность 
V
    Опции темы
Samotnik
Дата 29.8.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Нужно реализовать универсальный утилитный класс, который можно использовать для организации выполнения произвольного действия заданное кол-во раз через заданный интервал времени. Во время этого многократного выполнения действия поток-инициатор продолжает работать параллельно.
Примечание: данный утилитный класс НЕ должен содержать выполняемого действия, действие является для него параметром, как и длительность задержки и кол-во повторений.

PM MAIL   Вверх
y3u
Дата 29.8.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: 5
Всего: 13





--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
Maksym
  Дата 29.8.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Если по быстрому и вручную, то примерно так:
Код

public class Samotnik {

    public static void main(String[] args) {
        SampleTask sampleTask = new SampleTask("Task 1", 4, 1500L);
        SampleTask sampleTask1 = new SampleTask("Task 2", 3, 4000L);        
        sampleTask.start();
        sampleTask1.start();
    }

}

class SampleTask extends Task {
    
    public SampleTask(String taskName, int count, long interval) {        
        super(taskName, count, interval);
    }

    void executeTask() {
        // useful actions
        System.out.println(this.getTaskName() + ": executed in " + System.currentTimeMillis());
    }
}

abstract class Task extends Thread {
  
    private int count;
    private long interval;
    private String taskName;
    private int executedCount = 0;     
        
    public Task(String taskName, int count, long interval) {
        super();
        this.taskName = taskName;
        this.count = count;
        this.interval = interval;
    }
    
    public void run() {
        while (true) {
            if (executedCount < this.count) {
                this.executeTask();
                executedCount ++;
                try {
                    this.sleep(this.interval);
                } catch (InterruptedException e) {
                    throw new RuntimeException(this.taskName + ": V mene bezsonnya.");
                }
            } else {
               System.out.println(this.taskName + ": Finita la comedia");
               break;
            }
        }
   }    

    abstract void executeTask();

    public String getTaskName() {
        return taskName;
    }    
  
}

PM MAIL   Вверх
SoulKeeper
Дата 29.8.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Цитата

Примечание: данный утилитный класс НЕ должен содержать выполняемого действия, действие является для него параметром, как и длительность задержки и кол-во повторений.


так не покатит.

А вот так покатит smile

Код

public class Samotnik
{
    public static void main(String[] args)
    {
        SampleTask sampleTask = new SampleTask("Task 1", 4, 1500L, new SampleRunnable());
        SampleTask sampleTask1 = new SampleTask("Task 2", 3, 4000L, new SampleRunnable2());
        sampleTask.start();
        sampleTask1.start();
    }
}

class SampleRunnable implements Runnable
{
    public void run()
    {
        System.out.println("Running...");
    }
}

class SampleRunnable2 implements Runnable
{
    public void run()
    {
        System.out.println("Vupolnjaetsja");
    }
}

class SampleTask extends Task
{

    public SampleTask(String taskName, int count, long interval, Runnable task)
    {
        super(taskName, count, interval, task);
    }
}

abstract class Task extends Thread
{

    private int count;
    private long interval;
    private String taskName;
    private int executedCount = 0;
    private Runnable myTask;

    public Task(String taskName, int count, long interval, Runnable myTask)
    {
        super();
        this.taskName = taskName;
        this.count = count;
        this.interval = interval;
        this.myTask = myTask;
    }

    public void run()
    {
        while(true)
        {
            if(executedCount < this.count)
            {
                myTask.run();
                executedCount++;
                try
                {
                    this.sleep(this.interval);
                }
                catch(InterruptedException e)
                {
                    throw new RuntimeException(this.taskName + ": V mene bezsonnya.");
                }
            }
            else
            {
                System.out.println(this.taskName + ": Finita la comedia");
                break;
            }
        }
    }

    public String getTaskName()
    {
        return taskName;
    }

}


Вообще для этого есть куча готовых вещей даже в родных либах. От таймера до ScheduledThreadPoolExecutor"а... Смотря что нам от него нужно.

P.S. Задачка то на каком курсе smile? 
PM MAIL   Вверх
Maksym
Дата 29.8.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



SoulKeeper
Ну в общем то абстрактный класс логическии и не содержал самого действия  smile  но с исправлением согласен  smile 
Цитата(SoulKeeper @  29.8.2007,  16:31 Найти цитируемый пост)
P.S. Задачка то на каком курсе smile?  

думаю, четвертый.. smile 

Это сообщение отредактировал(а) Maksym - 29.8.2007, 16:41
PM MAIL   Вверх
SoulKeeper
Дата 29.8.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Цитата(Maksym @  29.8.2007,  16:40 Найти цитируемый пост)
думаю, четвертый.. smile 


Если это так, то в университетах все очень и очень плохо.
PM MAIL   Вверх
nornad
Дата 29.8.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(SoulKeeper @  29.8.2007,  19:45 Найти цитируемый пост)
Если это так, то в университетах все очень и очень плохо.

В последнее время там так и есть. И ситуация продолжает ухудшаться.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Maksym
Дата 29.8.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



SoulKeeper
Оффтопк:
ну я исходя из даты рождения Samotnik'а посчитал
Цитата(SoulKeeper @  29.8.2007,  16:45 Найти цитируемый пост)
Если это так, то в университетах все очень и очень плохо. 

А там когда-то было хорошо в том что касается IT?  smile 


PM MAIL   Вверх
SoulKeeper
Дата 29.8.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Цитата(Maksym @  29.8.2007,  16:53 Найти цитируемый пост)
А там когда-то было хорошо в том что касается IT?  


Теперь ясно почему в IT компаниях требуют стаж от 2-х лет  smile 
PM MAIL   Вверх
_Michael
Дата 29.8.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 2
Всего: 6



Цитата(SoulKeeper @  29.8.2007,  17:03 Найти цитируемый пост)

Теперь ясно почему в IT компаниях требуют стаж от 2-х лет  smile  
 
Полностью согласен smile , у нас на Украине такое же в подавляющем большинстве.


Это сообщение отредактировал(а) _Michael - 29.8.2007, 17:22


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Samotnik
Дата 29.8.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(SoulKeeper @  29.8.2007,  17:03 Найти цитируемый пост)
Теперь ясно почему в IT компаниях требуют стаж от 2-х лет

А где этот опыт брать?? На лабах?  smile 
И вообще эта задача не из универа!!!!    smile 
Пэ.Эс.
Пасибо всем!
PM MAIL   Вверх
Maksym
Дата 29.8.2007, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Samotnik
Не за что  smile 
PM MAIL   Вверх
redrick
Дата 29.8.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 3
Всего: 5




OFF
Цитата(Samotnik @  29.8.2007,  19:02 Найти цитируемый пост)
Цитата(SoulKeeper @  29.8.2007,  17:03 Найти цитируемый пост)
Теперь ясно почему в IT компаниях требуют стаж от 2-х лет

А где этот опыт брать?? На лабах?  smile 


Да нифига не требуют. Адекватных програмистов не хватает, так что и без опыта берут.



--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Samotnik
Дата 30.8.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



И вообще хоть я и на 4-м курсе, Java  я стал учить только с февраля месяца, а до этого ВООБЩЕ не знал, что такое Java и с чем ее едят.  smile 
Программил на СИ  

PM MAIL   Вверх
_Michael
Дата 31.8.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 2
Всего: 6



Цитата(Samotnik @  30.8.2007,  19:25 Найти цитируемый пост)
И вообще хоть я и на 4-м курсе, Java  я стал учить только с февраля месяца, а до этого ВООБЩЕ не знал, что такое Java и с чем ее едят.  smile 
Программил на СИ  

У меня также точь в точь, с февраля на курсах начал учить Джаву, а до того сишку только на лабораторных програмки писал. И все. smile 


Это сообщение отредактировал(а) _Michael - 31.8.2007, 11:31


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.