我正在使用 ServletContextListener 创建一个新线程。
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.concurrent.*;
public class Port implements ServletContextListener {
private ExecutorService executor;
public void contextDestroyed(ServletContextEvent event) {
executor.shutdown();
}
public void contextInitialized(ServletContextEvent event) {
// start task
executor = Executors.newSingleThreadExecutor();
executor.submit(new Task()); //task should implement Runnable!
}
}
在此线程中,我正在从串行端口 (SerialPortEventListener) 读取数据。 task.class 应在服务器处于 Activity 状态的整个期间从串口读取信息。我把它放在一个线程中,因为只能有一个实例从串行端口读取;然后应将数据共享给所有客户端。
现在我想访问这个线程从串行端口读取的数据。
这能做到吗?如果是,那么如何?
最佳答案
例如,您可以将读取的数据存储在 servlet 上下文属性中。然后,从其他类中,您将从 servlet 上下文中获取属性:
public void contextInitialized(final ServletContextEvent event) {
// start task
executor = Executors.newSingleThreadExecutor();
executor.submit(new Runnable() {
@Override
public void run() {
String data = readFromPort();
event.getServletContext().setAttribute("serialPortData", data);
}
});
}
}
关于java - 从线程中读取数据(在 Servlet 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177456/