Я не верю так. Можно использовать, 'содержит' на поле, но оно только генерирует LIKE
запрос. Если бы Вы хотите использовать полный текст, я рекомендовал бы использовать сохраненный proc, чтобы сделать, запрос тогда пасует назад его к LINQ
Ваш код не запускает новый поток, он запускает цикл в том же потоке, поэтому при развертывании вы получаете ошибку тайм-аута.
Чтобы запустить поток, вы должны вызвать метод запуска, а не метод запуска.
public void contextInitialized(ServletContextEvent sce) {
//Some init code not relevant, omitted for clarity
BidPushThread t= new BidPushThread();
t.setServletContext(sce.getServletContext());
t.start();// run();
}
СВОДКА:
- Помечает этот поток либо как поток демона, либо как поток пользователя. В Виртуальная машина Java завершает работу, когда только запущенные потоки - все это демон потоки.
- Этот метод должен быть вызван до запуска потока.
- Этот метод сначала вызывает метод checkAccess этого потока
без аргументов. Это может привести к выброс SecurityException (в
текущий поток).
РЕЗЮМЕ: Во многих случаях то, что мы действительно хочу создать фоновые потоки которые выполняют простые периодические задачи в заявление. Метод setDaemon () может использоваться для обозначения темы как поток демона, который следует убить и отброшены, когда нет других потоки приложений остаются. Как обычно, интерпретатор Java продолжает работать пока все потоки не будут завершены. Но когда потоки демона - единственные потоки еще живы, интерпретатор завершится.
Это было бы очень плохой идеей. Вы вызовете 100% загрузку процессора без уважительной причины.
Правильным решением, вероятно, является блокировка потока, когда очередь пуста. Это тривиально реализуется с помощью BlockingQueue
.
Can't I have a thread which is always running? When the app is removed,
that thread is stopped by the corresponding event in my ServletContextListener.
«Этот поток остановлен»? Как? В вашем цикле while (true) {...} нет условия завершения. Как вы это останавливаете? Вы используете метод Thread.stop ()? Это небезопасно и устарело еще в Java 1.1
. Если вы используете setDaemon (true), поток останется активным после того, как вы остановите веб-приложение с помощью инструментов управления сервером приложений. Затем, если вы перезапустите веб-приложение, вы получите еще один поток. Даже если вы попытаетесь отменить развертывание веб-приложения, поток будет продолжать работать и предотвратит сборку мусора для всего веб-приложения. Затем повторное развертывание следующей версии даст вам дополнительную копию всего, что находится в памяти.
Если вы предоставите условие выхода для цикла (например, InterruptedException или изменчивое логическое значение «stopNow»), вы можете избежать этой проблемы.
Взгляните на метод java.langThread.setDaemon (), может это то, что вам нужно