Skip to content

Commit

Permalink
1.74
Browse files Browse the repository at this point in the history
  • Loading branch information
MORIMORI0317 committed Dec 2, 2022
1 parent fb5e213 commit e89bd33
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 12 deletions.
2 changes: 1 addition & 1 deletion common/src/main/java/dev/felnull/fnjl/FNJLBuildIn.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package dev.felnull.fnjl;

public class FNJLBuildIn {
protected static final String VERSION = "1.73";
protected static final String VERSION = "1.74";
}
110 changes: 110 additions & 0 deletions common/src/main/java/dev/felnull/fnjl/util/FNRuntimeUtil.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,119 @@
package dev.felnull.fnjl.util;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Range;

import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

public class FNRuntimeUtil {
private static final Map<Runnable, Long> lastTimes = new HashMap<>();
private static final List<Timer> timers = new ArrayList<>();

/**
* 1日ごとに決まった時間に実行
*
* @param timer タイマー
* @param executor エクスキューター
* @param hours 時
* @param minutes 分
* @param runnable 実行
*/
public static void loopDayRunner(@NotNull Timer timer, @NotNull Executor executor, @Range(from = 0, to = 23) int hours, @Range(from = 0, to = 59) int minutes, @NotNull Runnable runnable) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());

if (calendar.get(Calendar.HOUR_OF_DAY) > hours || (calendar.get(Calendar.HOUR_OF_DAY) == hours && calendar.get(Calendar.MINUTE) >= minutes))
calendar.add(Calendar.DATE, 1);

calendar.set(Calendar.HOUR_OF_DAY, hours);
calendar.set(Calendar.MINUTE, minutes);

loopDayRunner_(calendar, timer, executor, runnable);
}

private static void loopDayRunner_(Calendar calendar, Timer timer, Executor executor, Runnable runnable) {
dayRunner(timer, executor, calendar.getTime(), () -> {
calendar.add(Calendar.DATE, 1);
loopDayRunner_(calendar, timer, executor, runnable);
runnable.run();
});
}

/**
* 指定の日付時刻に実行
*
* @param timer タイマー
* @param executor エクスキューター
* @param date 日付時刻
* @param runnable 実行
*/
public static void dayRunner(@NotNull Timer timer, @NotNull Executor executor, @NotNull Date date, @NotNull Runnable runnable) {
TimerTask task = new TimerTask() {
@Override
public void run() {
CompletableFuture.runAsync(runnable, executor);
}
};
timer.schedule(task, date);
}

/**
* 指定時間ごとに繰り返して実行
*
* @param timer タイマー
* @param executor エクスキューター
* @param delayTimeUnit 時間単位
* @param delayDuration 間隔
* @param runnable 実行
*/
public static void loopRunner(@NotNull Timer timer, @NotNull Executor executor, @NotNull TimeUnit delayTimeUnit, long delayDuration, @NotNull Runnable runnable) {
loopRunner(timer, executor, false, delayTimeUnit, delayDuration, runnable);
}

/**
* 指定時間ごとに繰り返して実行
*
* @param timer タイマー
* @param executor エクスキューター
* @param startDelay 最初に間隔を開けるかどうか
* @param delayTimeUnit 時間単位
* @param delayDuration 間隔
* @param runnable 実行
*/
public static void loopRunner(@NotNull Timer timer, @NotNull Executor executor, boolean startDelay, @NotNull TimeUnit delayTimeUnit, long delayDuration, @NotNull Runnable runnable) {
TimerTask task = new TimerTask() {
@Override
public void run() {
CompletableFuture.runAsync(runnable, executor);
}
};
long time = delayTimeUnit.toMillis(delayDuration);
timer.scheduleAtFixedRate(task, startDelay ? time : 0, time);
}

/**
* 指定時間後に遅れて実行
*
* @param timer タイマー
* @param executor エクスキューター
* @param delayTimeUnit 時間単位
* @param delayDuration 遅れ
* @param runnable 実行
*/
public static void delayRunner(@NotNull Timer timer, @NotNull Executor executor, @NotNull TimeUnit delayTimeUnit, long delayDuration, @NotNull Runnable runnable) {
TimerTask task = new TimerTask() {
@Override
public void run() {
CompletableFuture.runAsync(runnable, executor);
}
};
timer.schedule(task, delayTimeUnit.toMillis(delayDuration));
}

public static void oneDayClockTimer(int hours, int minutes, Runnable runnable) {
oneDayClockTimer(hours, minutes, runnable, false);
}
Expand Down Expand Up @@ -41,6 +147,7 @@ public void run() {
* @param runnables 実行
* @return CompletableFuture
*/
@Deprecated
public static CompletableFuture<Void> multipleRun(Runnable runnable, Runnable... runnables) {
return multipleRun(null, -1, runnable, runnables);
}
Expand All @@ -53,6 +160,7 @@ public static CompletableFuture<Void> multipleRun(Runnable runnable, Runnable...
* @param runnables 実行
* @return CompletableFuture
*/
@Deprecated
public static CompletableFuture<Void> multipleRun(String threadName, Runnable runnable, Runnable... runnables) {
return multipleRun(threadName, -1, runnable, runnables);
}
Expand All @@ -63,6 +171,7 @@ public static CompletableFuture<Void> multipleRun(String threadName, Runnable ru
* @param runnables 実行
* @return CompletableFuture
*/
@Deprecated
public static CompletableFuture<Void> multipleRun(int max, Runnable runnable, Runnable... runnables) {
return multipleRun(null, max, runnable, runnables);
}
Expand All @@ -76,6 +185,7 @@ public static CompletableFuture<Void> multipleRun(int max, Runnable runnable, Ru
* @param runnables 実行
* @return CompletableFuture
*/
@Deprecated
public static CompletableFuture<Void> multipleRun(String threadName, int max, Runnable runnable, Runnable... runnables) {
if (max <= 0)
max = 1 + runnables.length;
Expand Down
21 changes: 12 additions & 9 deletions common/src/test/java/dev/felnull/fnjltest/Main.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
package dev.felnull.fnjltest;

import dev.felnull.fnjl.util.FNArrayUtil;
import dev.felnull.fnjl.util.FNRuntimeUtil;

import java.util.Arrays;
import java.util.function.Supplier;
import java.util.Date;
import java.util.Timer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {
public static void main(String[] args) throws Exception {
Supplier<String>[] strs = new Supplier[3];
strs[0] = () -> "114514";
strs[1] = () -> "FCOH";
strs[2] = () -> "TEST";
String[] ret = FNArrayUtil.allGet(strs, String[]::new);
System.out.println(Arrays.toString(ret));
ExecutorService executorService = Executors.newCachedThreadPool();

FNRuntimeUtil.loopDayRunner(new Timer(), executorService, 16, 54, () -> {
System.out.println("ウァァ!!オレモイッチャウゥゥゥ!!!ウウウウウウウウウゥゥゥゥゥゥゥゥウウウウウウウウ!イィィイィィィイイイィイイイイ: " + new Date());
});

Thread.sleep(1000 * 114514);
}
}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
fnjl_group=dev.felnull
fnjl_name=felnull-java-library
fnjl_version=1.73
fnjl_version=1.74
2 changes: 1 addition & 1 deletion natives/src/main/java/dev/felnull/fnjln/FNJLNBuildIn.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package dev.felnull.fnjln;

public class FNJLNBuildIn {
protected static final String VERSION = "1.73";
protected static final String VERSION = "1.74";

protected static final int NATIVE_LIBRARY_VERSION = 1;
}

0 comments on commit e89bd33

Please sign in to comment.