快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记注册平台_机器人论坛



在第一节中,我们应用Handler、Thread/Runnable 、URL、HttpURLConnection等等来进行异步下载收集图片。然后第二节中换了AsyncTask要领。那么这一节我们再利用其他要领,这个要领与第一节有点雷同,感到走了一圈回到原地,只是风景加倍标致。人生很多时刻也是如斯,从NULL中来再回到NULL中。

那么它是谁呢?java.util.concurrent

java.util.concurrent 是在并发编程中很常用的实用对象类。

ExecutorService类:具有办事生命周期的Executors。

Executors 类:履行器,将为你治理Thread 工具。

我们知道这些是用来处置惩罚并发义务的,当然我们Demo只是哀求一张图片而已,并不能表现并发,然则假设我们有一个ListView,里面每一项都必要一张收集图片显示呢?那么并发性就可以表现出来了:多个线程并发从收集下载图片。当然这个版本不会应用listView显示多个项图片,今后做个版本吧!钻研下。

思路是这样的:

1:动态的创建N个线程,防在线程池中。

2:系统从线程池中掏出一个线程投入履行,线程池中若没有线程可用,其他义务只有先等待了,直到有新线程开释,才调用。

如下有几个措施可以动态的指定若干个线程。

newFixedThreadPool(int nThreads)指定线程个数

newCachedThreadPool()系统为每个义务都建立一个线程

下面可以实现并发下载数据

case R.id.btnThress:

progress.setVis和记注册平台ibility(View.VISIBLE);

final Handler newhandler=new Han和记注册平台dler();

executorService.submit(new Runnable(){

@Override

public void run() {

try {

URL newurl = new URL(params);

HttpURLConnection conn = (HttpURLConnection)newurl.openConnection();

conn.setDoInput(true);

conn.connect();

InputStream inputStream=conn.getInputStream();

bitmap =和记注册平台 BitmapFactory.decodeStream(inputStream);

newhandler.post(new Runnable(){

@Override

public void run() {

ImageView 和记注册平台view=(ImageView)frameLayout.findViewById(R.i和记注册平台d.image);

view.setImageBitmap(bitmap);

}

});

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

});

break;

您可能还会对下面的文章感兴趣: