Bonjour à tous, je vous explique mon problème :
J'ai un petit jeu multijoueur dans lequel les joueurs peuvent poser des bombes qui explosent au bout d'un certain temps (Un bomberman). Le moment ou les bombes explosent sont donc gérés par le serveur (qui est en java).
Le problème, c'est quand il y a trop de monde, donc quand plusieurs centaines de joueurs posent leurs bombes en même temps, le serveur commence à m'envoyer cette erreur : java.lang.OutOfMemoryError: unable to create new native thread, pour finir par ne plus réagir. Le reste des informations d'indique que c'est en voulant ajouter une nouvelle bombe qu'il plante.
Pour créer une bombe côté serveur, j'utilise cette classe (j'ai simplifié un peu pour garder l'essentiel) :
Mais apparement c'est une mauvaise méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class Bombe extends Thread { private int Temps; private boolean Active = true; private Bombe(int TEMPS) { Temps = TEMPS; start(); } public void run() { try { sleep(Temps); if (Active) { Explosion(); } } catch (Exception e) { } } }
J'aimerais donc connaitre la bonne méthode pour retarder l'execution d'une fonction d'un certain temps. L'objectif étant de pourvoir en faire plusieurs centaines simultanément ^^
Partager