mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-27 00:45:23 -04:00
incease fee as testnet is spammed with tx with high fees. use FxTimer in fx classes (gui). Use scheduledExecutor instead of timer
This commit is contained in:
parent
8716a506e8
commit
e456883f9b
19 changed files with 176 additions and 175 deletions
|
@ -50,6 +50,7 @@ public class UserThread {
|
|||
}
|
||||
|
||||
|
||||
// Prefer FxTimer if a delay is needed in a JavaFx class (gui module)
|
||||
public static Timer runAfterRandomDelay(Runnable runnable, long minDelayInSec, long maxDelayInSec) {
|
||||
return UserThread.runAfterRandomDelay(runnable, minDelayInSec, maxDelayInSec, TimeUnit.SECONDS);
|
||||
}
|
||||
|
|
|
@ -35,10 +35,7 @@ import java.net.URISyntaxException;
|
|||
import java.net.URLConnection;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -68,16 +65,35 @@ public class Utilities {
|
|||
public static ThreadPoolExecutor getThreadPoolExecutor(String name,
|
||||
int corePoolSize,
|
||||
int maximumPoolSize,
|
||||
long keepAliveTime) {
|
||||
long keepAliveTimeInSec) {
|
||||
final ThreadFactory threadFactory = new ThreadFactoryBuilder()
|
||||
.setNameFormat(name)
|
||||
.setDaemon(true)
|
||||
.build();
|
||||
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime,
|
||||
ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTimeInSec,
|
||||
TimeUnit.SECONDS, new ArrayBlockingQueue<>(maximumPoolSize), threadFactory);
|
||||
threadPoolExecutor.allowCoreThreadTimeOut(true);
|
||||
threadPoolExecutor.setRejectedExecutionHandler((r, executor) -> log.warn("RejectedExecutionHandler called"));
|
||||
return threadPoolExecutor;
|
||||
executor.allowCoreThreadTimeOut(true);
|
||||
executor.setRejectedExecutionHandler((r, e) -> log.warn("RejectedExecutionHandler called"));
|
||||
return executor;
|
||||
}
|
||||
|
||||
|
||||
public static ScheduledThreadPoolExecutor getScheduledThreadPoolExecutor(String name,
|
||||
int corePoolSize,
|
||||
int maximumPoolSize,
|
||||
long keepAliveTimeInSec) {
|
||||
final ThreadFactory threadFactory = new ThreadFactoryBuilder()
|
||||
.setNameFormat(name)
|
||||
.setDaemon(true)
|
||||
.setPriority(Thread.MIN_PRIORITY)
|
||||
.build();
|
||||
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(corePoolSize, threadFactory);
|
||||
executor.setKeepAliveTime(keepAliveTimeInSec, TimeUnit.SECONDS);
|
||||
executor.allowCoreThreadTimeOut(true);
|
||||
executor.setMaximumPoolSize(maximumPoolSize);
|
||||
executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
|
||||
executor.setRejectedExecutionHandler((r, e) -> log.warn("RejectedExecutionHandler called"));
|
||||
return executor;
|
||||
}
|
||||
|
||||
public static boolean isUnix() {
|
||||
|
|
|
@ -36,8 +36,8 @@ package io.bitsquare.storage;
|
|||
|
||||
|
||||
import com.google.common.io.Files;
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import io.bitsquare.common.UserThread;
|
||||
import io.bitsquare.common.util.Utilities;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -80,17 +80,7 @@ public class FileManager<T> {
|
|||
this.dir = dir;
|
||||
this.storageFile = storageFile;
|
||||
|
||||
ThreadFactoryBuilder builder = new ThreadFactoryBuilder()
|
||||
.setDaemon(true)
|
||||
.setNameFormat("FileManager-%d")
|
||||
.setPriority(Thread.MIN_PRIORITY); // Avoid competing with the GUI thread.
|
||||
|
||||
// An executor that starts up threads when needed and shuts them down later.
|
||||
executor = new ScheduledThreadPoolExecutor(1, builder.build());
|
||||
executor.setKeepAliveTime(5, TimeUnit.SECONDS);
|
||||
executor.allowCoreThreadTimeOut(true);
|
||||
executor.setMaximumPoolSize(10);
|
||||
executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
|
||||
executor = Utilities.getScheduledThreadPoolExecutor("FileManager", 1, 10, 5);
|
||||
|
||||
// File must only be accessed from the auto-save executor from now on, to avoid simultaneous access.
|
||||
savePending = new AtomicBoolean();
|
||||
|
@ -177,14 +167,8 @@ public class FileManager<T> {
|
|||
* Shut down auto-saving.
|
||||
*/
|
||||
public void shutDown() {
|
||||
/* if (serializable != null)
|
||||
log.debug("shutDown " + serializable.getClass().getSimpleName());
|
||||
else
|
||||
log.debug("shutDown");*/
|
||||
|
||||
executor.shutdown();
|
||||
try {
|
||||
//executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); // forever
|
||||
executor.awaitTermination(5, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue