我是靠谱客的博主 闪闪烤鸡,最近开发中收集的这篇文章主要介绍java集合多线程问题_Java多线程操作集合的小问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原来是把List集合用for循环操作,现在想用多线程来弄,想提高点速度。这是先做了个小例子,然后就发现出问题了。停不下来。。。

继承Runnable接口的类里的Run方法是这样的,

public void run() {

// TODO Auto-generated method stub

//

while (index

list.get(index).append("namerate", list.get(index).getString("name")+list.get(index).getString("rate"));

System.out.println(Thread.currentThread().getName()+ "正在处理"+this.index++);

}

}

在main方法是这样用的

List list = poitest.getData();

MyThread myThread = new MyThread(list);

new Thread(myThread, "1号线程").start();

new Thread(myThread, "2号线程").start();

new Thread(myThread, "3号线程").start();

new Thread(myThread, "4号线程").start();

new Thread(myThread, "5号线程").start();

while (flag) {

if (myThread.getIndex() >= list.size()) {

// System.out.println("最后"+myThread.getIndex());

flag = false;

}

// System.out.println(myThread.getIndex()>= list.size());

// System.out.println("mainflag:"+flag);

}

下面的两个无论哪个取消注释,都能停止。但是注释后,就显示还在运行。

我用debug来看线程的话是这样的

Thread [main] (Running)

Daemon Thread [cluster-ClusterId{value='58083c114d7c9d336ce66915', description='null'}-127.0.0.1:27017] (Running)

Daemon Thread [pool-2-thread-1] (Running)

不知道为啥会这样,我加断点用F5执行完却也能结束。。。

其实就是想用多线程来处理集合,处理完后再返回,所以我得在main里面判断多线程是否结束,然后才能执行后面的。

可这个问题很是诧异啊。我也是菜鸟,看网上都说用线程池什么的,但我想解决我这个问题。之后再有什么锁的问题到时再看。。。

最后

以上就是闪闪烤鸡为你收集整理的java集合多线程问题_Java多线程操作集合的小问题的全部内容,希望文章能够帮你解决java集合多线程问题_Java多线程操作集合的小问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部