Ниже приведен пример потока изображений, который я использую, который вызывается каждый раз, когда появляется изображение для показа.Я использую код, подобный этому, чтобы сделать другие сетевые соединения также.Я подозреваю, что проблема в моих рабочих характеристиках заключается в том, что у меня отсутствует пул потоков.
Если несколько или многие из этих потоков создаются до их завершения, они не существуют одновременно, неизменно снижая производительность?
Как мне реализовать пул потоков?Я видел, как этот термин распространялся, но мне не удалось найти хороший простой пример его реализации.
public class ImageThread extends Thread {
private String url;
private HttpConnection httpConn;
private InputStream is;
private JSONArray array;
private Bitmap image;
private ImageThreadCallback c;
private static boolean hasImageCache = false;
private static MultiMap imageCache;
public ImageThread(String url, ImageThreadCallback c, String ident){
System.out.println("Connection begin!");
this.url = url;
this.c = c;
}
public void notifyUs(){
this.c.update(image);
}
public void run(){
myConnectionFactory connFact = new myConnectionFactory();
ConnectionDescriptor connDesc;
connDesc = connFact.getConnection(url);
System.out.println("Connection factory!");
if(connDesc != null)
{
System.out.println("Connection not null!");
httpConn = (HttpConnection) connDesc.getConnection();
try {
httpConn.setRequestMethod(HttpConnection.GET);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
is = null;
try
{
final int iResponseCode = httpConn.getResponseCode();
System.out.println("Connection in run!");
// Get InputConnection and read the server's response
InputConnection inputConn = (InputConnection) httpConn;
try {
is = inputConn.openInputStream();
System.out.println("Connection got inputstream!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] data = null;
try {
data = IOUtilities.streamToBytes(is);
System.out.println("Connection got data!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
EncodedImage hai = EncodedImage.createEncodedImage(data, 0, data.length);
image = hai.getBitmap();
notifyUs();
}
catch(IOException e)
{
System.err.println("Caught IOException: " + e.getMessage());
}
}
}
}
Кроме пула потоков, есть ли проблемы с моим кодом?Я избежал потока событий пользовательского интерфейса, создав такой поток?