我想知道我的代码是否是线程安全的

时间:2016-07-31 17:13:18

标签: android multithreading view

我有一个这样的代码,它创建了一个匿名线程 每次循环进行。而cityArray的长度是17岁。

for(int i=0; i<cityArray.length; i++)
{
    final int finalI = i;
    new Thread(new Runnable() {
        @Override
        public void run() {
            setMarkerIcon(cityArray[finalI]);
        }
    }).start();
}

它调用setMarkerIcon方法,该方法运行getBestMarkerItemfromArrayList,然后运行runOnUiThread来更新视图。

public void setMarkerIcon( final String city ){
final MarkerItem markerItem = getBestMarkerItemfromArrayList(city);
getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
        Log.i(TAG, "run: ");
        if(markerItem != null){
            Glide.with(getContext())
                    .load(R.drawable.back_level3)
                    .asBitmap()
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(new SimpleTarget<Bitmap>() {
                        @Override
                        public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
                            Log.i(TAG, "onResourceReady: " + map.getMarkers().size() + "__" + city);
                            for (int i = 0; i < markerOptions.length; i++) {
                                if (map.getMarkers().get(i).getData().equals(city)) {
                                    map.getMarkers().get(i).setIcon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(city, bitmap)));
                                    break;
                                }
                            }
                        }
                    });

代码效果很好,目前似乎没有问题。 但我只是想确保我正确使用该线程。 感谢。

0 个答案:

没有答案