Привет, у меня есть веб-приложение - и одним способом мне нужно зашифровать часть данных из запроса, сохранить их на диске и вернуть ответ.
Ответ никак не связан с шифрованием.
Однако шифрование требует довольно много времени. Как сделать темы или так правильно в этой задаче?
Я пробовал что-то вроде
Резьба нить ...
Thread.start ();
или
JobDetail job = encryptionScheduler.getJobDetail (jobDetail.getName (), jobDetail.getGroup ());
encryptionScheduler.scheduleJob (jobDetail, TriggerUtils.makeImmediateTrigger ( "encryptionTrigger", 1,1)
Я попробовал сервлет, где перед шифрованием я закрываю outpuStream.
или: Executors.newFixedThreadPool (1);
Но что бы я ни пытался, клиент должен ждать дольше.
кстати: почему это так? Это может быть быстрее?
Я не пытался запустить поток после инициализации контекста и как-то ждать, пока метод не нуждается в шифровании.
как ускорить это?
спасибо
-------------- EDIT:
// Я использую ось 1.4, где у меня есть обработчик, который в методе invoke шифрует значение:
try {
LogFile logFile = new LogFile(strategy,nodeValue,path, new Date());
LogQueue.queue.add(logFile);
}
catch (Exception e) {
log.error(e.getMessage(),e);
}
EExecutor.executorService.execute(new Runnable() {
public void run() {
try {
LogFile poll = LogQueue.queue.poll();
String strategy = poll.getStrategy();
String value = poll.getNodeValue();
value = encrypt(strategy,value);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(poll.getPath(), true )),"UTF-8"));
writer.print(value);
writer.close();
}catch (IOException e ) {
log.error(e.getMessage(),e);
}
}
});
} catch (Throwable e ) {
log.error(e.getMessage(),e);
}
// кроме того у меня есть служба исполнителя
public class EExecutor { public static ExecutorService executorService = Executors.newCachedThreadPool();}
// и что действительно интересно .. когда я перемещаю шифрование из этого обработчика в другой обработчик, который называется
последний раз, когда я отправляю ответ! Это быстрее Но когда я оставляю это в одном из первых обработчиков, когда получаю запрос. Это даже медленнее без использования потоков / сервлетов и т. Д.