powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Периодический вызов одной и той же функции через определенные промежутки времени
25 сообщений из 32, страница 1 из 2
Периодический вызов одной и той же функции через определенные промежутки времени
    #38148749
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброй ночи!
Есть класс. У него куча методов.
Один из этих методов надо периодически вызывать(каждую секунду например).
Так же этот метод может быть вызван из каких-то других функций по ходу выполнения программы и нельзя так допустить, чтобы эти функции пересекались по выполнению так как работают с общими данными.

Подскажите скелет того как это всё реализовать.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38148755
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thread?
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38148761
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redwhite90,
мысль только такая что делать весь большой класс runnable и внутри run по sleep вызывать метод, который мне надо(update), сделать его synchronized, а со всем классом как работать, так и работать.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38148762
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но я как то потоки осмысленно не применял никогда. Боюсь, что это бред
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38148829
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
Цикл for чем не устроил.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38148888
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38148933
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Доброй ночи!
Есть класс. У него куча методов.
Один из этих методов надо периодически вызывать(каждую секунду например).
Так же этот метод может быть вызван из каких-то других функций по ходу выполнения программы и нельзя так допустить, чтобы эти функции пересекались по выполнению так как работают с общими данными.

Подскажите скелет того как это всё реализовать.

wtf?
Начнем с конца, вызов метода периодический блокирует вызов из "любого" другого места и наоборот.
Можно просто метод сделать синхронизированным

Код: java
1.
2.
3.
4.
5.
6.
public class MyClass {
  final Semaphore semaphore = new Semaphore(1);
  public synchronized void myMethod() {
    //body
  }
}



Можно сделать примитивно через семафор , ограничив кол-во "потоков" в методе.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class MyClass {
  final Semaphore semaphore = new Semaphore(1);
  public void myMethod() {
     //start
     semaphore.acquire();
  
     //body


    //end
    semaphore.release();
  }
}




Теперь периодический запуск. ScheduledExecutorService позволяет выполнять задачу периодично с нужным промежутком:

Код: java
1.
2.
ScheduledExecutorService schedulerService = Executors.newSingleThreadScheduledExecutor();
schedulerService .scheduleWithFixedDelay(...);
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149124
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,

то есть этот единственный метод надо во внутренний класс вытащить?
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149127
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Озверин,

то есть этот единственный метод надо во внутренний класс вытащить?

из чего вы сделали этот вывод?
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149186
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,сейчас попробовал-все и так работает(без внутренних классов). Просто для меня как то необычно это все
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149212
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторpublic class MyClass {
final Semaphore semaphore = new Semaphore(1);
public synchronized void myMethod() {
//body
}
}

тут нет масла масленного?
и семафор и synchronized просто...
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149280
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90авторpublic class MyClass {
final Semaphore semaphore = new Semaphore(1);
public synchronized void myMethod() {
//body
}
}

тут нет масла масленного?
и семафор и synchronized просто...

просто копипастил ;)
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149358
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,

А что, если мне, допустим, понадобится запускать в отдельных потоках не 1 функцию а 2, 3....
И так чтобы я мог управлять каждой(когда захотел остановил каждый поток(функцию))
И все эти методы в 1 классе находятся.

ведь всего 1 метод run и в нем нет параметров
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149364
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
у тебя СЕЙЧАС сколько потоков и кто вызывает ту функцию? Или с нуля проект?
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149370
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторScheduledExecutorService schedulerService = Executors.newSingleThreadScheduledExecutor();
schedulerService .scheduleWithFixedDelay(...);

и как это остановить кстати?
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149393
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90авторScheduledExecutorService schedulerService = Executors.newSingleThreadScheduledExecutor();
schedulerService .scheduleWithFixedDelay(...);

и как это остановить кстати?

надо читать, как запустить для начала ;(
Я вам дал инструменты, почитайте про них, так как иначе вы все сломаете.

Еще есть предположение, что вам надо таки осилить какую-нибудь книгу по многопоточности(или java?)
Thinking in java ( в 4м издании по моему есть про многопоточность - коротко и ясно)
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149404
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запустить-то у меня получилось.
Кстати читал))но пару месяцев назад мало, что понял
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149408
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Проект с нуля.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149411
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

всего поток один пока
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149417
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Petro123,
всего поток один пока
тогда ешь "слона по частям".
Делай "по ходу выполнения программы" из твоей фразы . А потом добавишь защиту, если потребуется.
Напр. для субд она не нужна.
Т.е. делай логику программы.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149439
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наверное не так сформулировал.
Код: java
1.
2.
3.
4.
5.
6.
7.
class A{
public void method1();
public void method2();
public void method3();
public void method4();
public void method5();
}



и мне надо чтобы я в фон мог запустить 1 метод, потом 3, потом 4, потом вырубить 1, вырубить 4...включить 5.....

а насчёт остановить: я бы хотел иметь эти потоки - демонами.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149448
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

в зависимости от того, что поток "делает", вы его можете и вовсе не остановить.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149459
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с этого бы и начинал, с кода )))))
redwhite90и мне надо чтобы я в фон мог запустить 1 метод
- пиши код запуска в потоке.
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149468
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

можно пример кода?
...
Рейтинг: 0 / 0
Периодический вызов одной и той же функции через определенные промежутки времени
    #38149511
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
шутка?
1 класс вторая четверть - иначе делай без потоков.
Удачи!
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Периодический вызов одной и той же функции через определенные промежутки времени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]