微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多线程 – 在播放框架中的JPA和线程

我正在尝试创建一个多线程服务器.问题是我收到以下错误
play.exceptions.JPAException:JPA上下文未初始化.当在应用程序中找到使用@ javax.persistence.Entity注释注释的一个或多个类时,JPA实体管理器将自动启动.

我想要做的是从新线程访问db,这里是代码

package controllers;
import java.util.Iterator;
import java.util.List;
import models.Ball;


public class MainLoop extends Thread {

@Override
public void run() {
    List<Ball> balls;
    new Ball(5,5,2,10,15);
    while (true){
        balls = Ball.all().fetch(); //Here throws an exception 

        for (Iterator iterator = balls.iterator(); iterator.hasNext();) {
            Ball ball = (Ball) iterator.next();
            ball.applyForces();
        }
    }
}
}

有任何想法吗?

解决方法

不要使用普通线程,而是使用作业:
@OnApplicationStart 
public class MainLoop extends Job { 
       public void doJob() { 
               new BallJob().Now(); 
       }
}

和球手:

public class BallJob extends Job {
public void doJob() {
    List<Ball> balls;
    new Ball(5,15);
    while (true){
        balls = Ball.all().fetch(); 
        for (Iterator iterator = balls.iterator(); iterator.hasNext();) {
            Ball ball = (Ball) iterator.next();
            ball.applyForces();
        }
    }
}

原文地址:https://www.jb51.cc/java/121975.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐