Addition of ThreadsForLoading configuration.

This commit is contained in:
MobiusDevelopment
2019-04-05 18:30:14 +00:00
parent 955c2eff68
commit fc6c31df53
59 changed files with 1144 additions and 492 deletions

View File

@@ -95,28 +95,44 @@ public class SpawnsData implements IXmlReader
}
LOGGER.info(getClass().getSimpleName() + ": Initializing spawns...");
final List<ScheduledFuture<?>> jobs = new CopyOnWriteArrayList<>();
for (SpawnTemplate template : _spawns)
if (Config.THREADS_FOR_LOADING)
{
if (template.isSpawningByDefault())
final List<ScheduledFuture<?>> jobs = new CopyOnWriteArrayList<>();
for (SpawnTemplate template : _spawns)
{
jobs.add(ThreadPool.schedule(() ->
if (template.isSpawningByDefault())
{
template.spawnAll(null);
template.notifyActivate();
}, 0));
jobs.add(ThreadPool.schedule(() ->
{
template.spawnAll(null);
template.notifyActivate();
}, 0));
}
}
}
while (!jobs.isEmpty())
{
for (ScheduledFuture<?> job : jobs)
while (!jobs.isEmpty())
{
if ((job == null) || job.isDone() || job.isCancelled())
for (ScheduledFuture<?> job : jobs)
{
jobs.remove(job);
if ((job == null) || job.isDone() || job.isCancelled())
{
jobs.remove(job);
}
}
}
}
else
{
for (SpawnTemplate template : _spawns)
{
if (template.isSpawningByDefault())
{
template.spawnAll(null);
template.notifyActivate();
}
}
}
LOGGER.info(getClass().getSimpleName() + ": All spawns has been initialized!");
}

View File

@@ -69,26 +69,40 @@ public class DocumentEngine
public List<Item> loadItems()
{
final List<Item> list = new CopyOnWriteArrayList<>();
final List<ScheduledFuture<?>> jobs = new CopyOnWriteArrayList<>();
for (File file : _itemFiles)
if (Config.THREADS_FOR_LOADING)
{
jobs.add(ThreadPool.schedule(() ->
final List<ScheduledFuture<?>> jobs = new CopyOnWriteArrayList<>();
for (File file : _itemFiles)
{
jobs.add(ThreadPool.schedule(() ->
{
final DocumentItem document = new DocumentItem(file);
document.parse();
list.addAll(document.getItemList());
}, 0));
}
while (!jobs.isEmpty())
{
for (ScheduledFuture<?> job : jobs)
{
if ((job == null) || job.isDone() || job.isCancelled())
{
jobs.remove(job);
}
}
}
}
else
{
for (File file : _itemFiles)
{
final DocumentItem document = new DocumentItem(file);
document.parse();
list.addAll(document.getItemList());
}, 0));
}
while (!jobs.isEmpty())
{
for (ScheduledFuture<?> job : jobs)
{
if ((job == null) || job.isDone() || job.isCancelled())
{
jobs.remove(job);
}
}
}
return list;
}