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

前端之家收集整理的这篇文章主要介绍了多线程 – 在播放框架中的JPA和线程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个多线程服务器.问题是我收到以下错误
play.exceptions.JPAException:JPA上下文未初始化.当在应用程序中找到使用@ javax.persistence.Entity注释注释的一个或多个类时,JPA实体管理器将自动启动.

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

  1. package controllers;
  2. import java.util.Iterator;
  3. import java.util.List;
  4. import models.Ball;
  5.  
  6.  
  7. public class MainLoop extends Thread {
  8.  
  9. @Override
  10. public void run() {
  11. List<Ball> balls;
  12. new Ball(5,5,2,10,15);
  13. while (true){
  14. balls = Ball.all().fetch(); //Here throws an exception
  15.  
  16. for (Iterator iterator = balls.iterator(); iterator.hasNext();) {
  17. Ball ball = (Ball) iterator.next();
  18. ball.applyForces();
  19. }
  20. }
  21. }
  22. }

有任何想法吗?

解决方法

不要使用普通线程,而是使用作业:
  1. @OnApplicationStart
  2. public class MainLoop extends Job {
  3. public void doJob() {
  4. new BallJob().now();
  5. }
  6. }

和球手:

  1. public class BallJob extends Job {
  2. public void doJob() {
  3. List<Ball> balls;
  4. new Ball(5,15);
  5. while (true){
  6. balls = Ball.all().fetch();
  7. for (Iterator iterator = balls.iterator(); iterator.hasNext();) {
  8. Ball ball = (Ball) iterator.next();
  9. ball.applyForces();
  10. }
  11. }
  12. }

猜你在找的Java相关文章