Bonjour,
J'ai une liste d'attente ConcurrentLinkedQueue<UrlX> d'URL (plus précisément ce sont des UrlX, un objet que j'ai créé avec une propriété urlString (string)).
J'ai 10 threads qui prennent les urls une à une (ils supprime l'url qu'ils prennent) et de temps en temps ces threads rajoutent des urls
L'ennui est que pour le pas avoir de heap space error j'ai une fonction qui regarde si l'url n'est pas déjà dans la file d'attente avant de l'ajouter :
Et cette fonction prend beaucoup de temps à s'exécuter. Avant j'utilisais un ArrayList qui était beaucoup plus rapide mais à l'époque il n'y avait pas d'accès concurrent
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 private boolean urlQueueContain(String urlString,int depth) { Iterator<UrlX> it=this.urlQueue.iterator(); UrlX url; while(it.hasNext()) { url=it.next(); if(url.urlString.equals(urlString)) { if(url.depth>depth) { this.urlQueue.remove(url); return false; } return true; } } return false; }
Comment puis je résoudre cela ?
Partager