开发者社区> 问答> 正文

不断运行的线程

在Java中是否可以创建始终在后台运行的线程?问题在于应用程序实例有时会因OutOfMemoryException崩溃。因此,并行启动了几个实例。每个实例都做一些工作:根据用户的请求将某些内容保存到数据库中。流应该持续工作,它将查看数据库并以某种方式处理来自该数据库的信息。

由于线程必须不断运行并等待信号开始工作,因此sheduler最有可能无法工作。

展开
收起
垚tutu 2019-11-29 23:20:25 927 0
1 条回答
写回答
取消 提交回答
  • #include

    首先,我建议您调查并解决OutOfMemoryException,因为最好避免这些情况。您可以实例化一个等待请求的线程,执行一个请求,然后返回以等待另一个请求。线程的实现是这样的:

    /** Squares integers. */
    public class Squarer {
    
        private final BlockingQueue<Integer> in;
        private final BlockingQueue<SquareResult> out;
    
        public Squarer(BlockingQueue<Integer> requests,
                       BlockingQueue<SquareResult> replies) {
            this.in = requests;
            this.out = replies;
        }
        public void start() {
            new Thread(new Runnable() {
                public void run() {
                    while (true) {
                        try {
    
                    // block until a request arrives
                        int x = in.take();
                        // compute the answer and send it back
                        int y = x * x;
                        out.put(new SquareResult(x, y));
                    } catch (InterruptedException ie) {
                        ie.printStackTrace();
                    }
                }
            }
        }).start();
    }
    

    } 对于调用者方法:

    public static void main(String[] args) {
    
        BlockingQueue<Integer> requests = new LinkedBlockingQueue<>();
        BlockingQueue<SquareResult> replies = new LinkedBlockingQueue<>();
    
        Squarer squarer = new Squarer(requests, replies);
        squarer.start();
    
        try {
            // make a request
            requests.put(42);
            // ... maybe do something concurrently ...
            // read the reply
            System.out.println(replies.take());
        } catch (InterruptedException ie) {
            ie.printStackTrace();
        }
    }
    
    

    有关更多信息,您可以开始阅读我在此处找到的示例,以向您提供示例。

    2019-11-29 23:20:50
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多