mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-05-24 06:46:08 +00:00
format proxy code, allow to change swf on the fly
This commit is contained in:
@@ -2,132 +2,133 @@ package com.jpexs.proxy;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class WorkerThread extends Thread {
|
||||
|
||||
private Runnable task;
|
||||
private String name;
|
||||
private Runnable task;
|
||||
private String name;
|
||||
|
||||
private static int nactive = 0;
|
||||
private static Vector list = new Vector();
|
||||
private static int max = 10;
|
||||
private static long lifetime = 900 * 1000; /* 15 minute default */
|
||||
private static int nactive = 0;
|
||||
private static Vector list = new Vector();
|
||||
private static int max = 10;
|
||||
private static long lifetime = 900 * 1000; /* 15 minute default */
|
||||
|
||||
private
|
||||
WorkerThread() {
|
||||
setDaemon(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the lifetime of an idle WorkerThread (in ms). A WorkerThread
|
||||
* will remain on the idle list for this much time before exiting. This
|
||||
* does not affect WorkerThreads currently idling.
|
||||
*/
|
||||
synchronized static void
|
||||
setLifetime(long time) {
|
||||
lifetime = time;
|
||||
}
|
||||
private
|
||||
WorkerThread() {
|
||||
setDaemon(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum number of WorkerThreads that can exist at any given
|
||||
* time. If this value is decreased below the current number of
|
||||
* WorkerThreads, this will not take effect immediately.
|
||||
*/
|
||||
synchronized static void
|
||||
setMaxThreads(int maxThreads) {
|
||||
max = maxThreads;
|
||||
}
|
||||
/**
|
||||
* Sets the lifetime of an idle WorkerThread (in ms). A WorkerThread will
|
||||
* remain on the idle list for this much time before exiting. This does not
|
||||
* affect WorkerThreads currently idling.
|
||||
*/
|
||||
synchronized static void
|
||||
setLifetime(long time) {
|
||||
lifetime = time;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains a WorkerThread to which a task can be assigned. If an idle
|
||||
* WorkerThread is present, it is removed from the idle list and returned.
|
||||
* If not, and the maximum number of WorkerThreads has not been reached,
|
||||
* a new WorkerThread is created. If the maximum number has been reached,
|
||||
* this blocks until a WorkerThread is free.
|
||||
*/
|
||||
static WorkerThread
|
||||
getThread() {
|
||||
WorkerThread t;
|
||||
synchronized (list) {
|
||||
if (list.size() > 0) {
|
||||
t = (WorkerThread) list.firstElement();
|
||||
list.removeElement(t);
|
||||
}
|
||||
else if (nactive >= max) {
|
||||
while (true) {
|
||||
try {
|
||||
list.wait();
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
}
|
||||
if (list.size() == 0)
|
||||
continue;
|
||||
t = (WorkerThread) list.firstElement();
|
||||
list.removeElement(t);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
t = new WorkerThread();
|
||||
nactive++;
|
||||
}
|
||||
return t;
|
||||
}
|
||||
/**
|
||||
* Sets the maximum number of WorkerThreads that can exist at any given
|
||||
* time. If this value is decreased below the current number of
|
||||
* WorkerThreads, this will not take effect immediately.
|
||||
*/
|
||||
synchronized static void
|
||||
setMaxThreads(int maxThreads) {
|
||||
max = maxThreads;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigns a task to a WorkerThread
|
||||
* @param task The task to be run
|
||||
* @param name The name of the task
|
||||
*/
|
||||
public static void
|
||||
assignThread(Runnable task, String name) {
|
||||
while (true) {
|
||||
try {
|
||||
WorkerThread t = getThread();
|
||||
synchronized (t) {
|
||||
t.task = task;
|
||||
t.name = name;
|
||||
if (!t.isAlive())
|
||||
t.start();
|
||||
else
|
||||
t.notify();
|
||||
}
|
||||
return;
|
||||
}
|
||||
catch (IllegalThreadStateException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Obtains a WorkerThread to which a task can be assigned. If an idle
|
||||
* WorkerThread is present, it is removed from the idle list and returned.
|
||||
* If not, and the maximum number of WorkerThreads has not been reached, a
|
||||
* new WorkerThread is created. If the maximum number has been reached, this
|
||||
* blocks until a WorkerThread is free.
|
||||
*/
|
||||
static WorkerThread
|
||||
getThread() {
|
||||
WorkerThread t;
|
||||
synchronized (list) {
|
||||
if (list.size() > 0) {
|
||||
t = (WorkerThread) list.firstElement();
|
||||
list.removeElement(t);
|
||||
} else if (nactive >= max) {
|
||||
while (true) {
|
||||
try {
|
||||
list.wait();
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
if (list.size() == 0) {
|
||||
continue;
|
||||
}
|
||||
t = (WorkerThread) list.firstElement();
|
||||
list.removeElement(t);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
t = new WorkerThread();
|
||||
}
|
||||
nactive++;
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
/** Performs the task */
|
||||
synchronized public void
|
||||
run() {
|
||||
while (true) {
|
||||
setName(name);
|
||||
try {
|
||||
task.run();
|
||||
}
|
||||
catch (Throwable t) {
|
||||
System.err.println(t);
|
||||
}
|
||||
setName("idle thread");
|
||||
synchronized (list) {
|
||||
list.addElement(this);
|
||||
if (nactive >= max)
|
||||
list.notify();
|
||||
nactive--;
|
||||
}
|
||||
task = null;
|
||||
try {
|
||||
wait(lifetime);
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
}
|
||||
if (task == null) {
|
||||
list.removeElement(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Assigns a task to a WorkerThread
|
||||
*
|
||||
* @param task The task to be run
|
||||
* @param name The name of the task
|
||||
*/
|
||||
public static void
|
||||
assignThread(Runnable task, String name) {
|
||||
while (true) {
|
||||
try {
|
||||
WorkerThread t = getThread();
|
||||
synchronized (t) {
|
||||
t.task = task;
|
||||
t.name = name;
|
||||
if (!t.isAlive()) {
|
||||
t.start();
|
||||
} else {
|
||||
t.notify();
|
||||
}
|
||||
}
|
||||
return;
|
||||
} catch (IllegalThreadStateException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the task
|
||||
*/
|
||||
synchronized public void
|
||||
run() {
|
||||
while (true) {
|
||||
setName(name);
|
||||
try {
|
||||
task.run();
|
||||
} catch (Throwable t) {
|
||||
System.err.println(t);
|
||||
}
|
||||
setName("idle thread");
|
||||
synchronized (list) {
|
||||
list.addElement(this);
|
||||
if (nactive >= max) {
|
||||
list.notify();
|
||||
}
|
||||
nactive--;
|
||||
}
|
||||
task = null;
|
||||
try {
|
||||
wait(lifetime);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
if (task == null) {
|
||||
list.removeElement(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user