当前位置: 代码迷 >> J2SE >> 多线程并行的有关问题
  详细解决方案

多线程并行的有关问题

热度:106   发布时间:2016-04-24 13:09:25.0
多线程并行的问题
我对java的多线程不是很熟悉,找了很久也没找到合适的例子.

我想实现这么个功能,在List里装有待处理的对象,用多个线程从List里取得对象并处理,把读取过的对象从List里删去..在操作list的时候加锁...

我自己试着写了个可是不象并行运行的,有谁能给我个例子么?不胜感激...

------解决方案--------------------
老兄 加了锁你再怎么并行好象也没有用吧?
------解决方案--------------------
}else{
String ThreadName=Thread.currentThread().getName();
isReading=true;
long timeStart = System.currentTimeMillis();//test
long time=0;
if(sourceList.size()!=0){
atom=sourceList.get(0);
sourceList.remove(0);
isReading=false;
}

notify();
while(time>-1){
long timeEnd = System.currentTimeMillis();//test
time=(timeStart-timeEnd)/1000;
------解决方案--------------------
代码贴错了吧?怎么run()方法后面完全不懂了。。。
------解决方案--------------------
读取为什么要枷锁呀,读取时并没有引起内容的变化呀
在写入时才引起内容的变化,我感觉在写入是要枷锁啊
是不是读写线程的问题呀
------解决方案--------------------
public synchronized void read()这说明同时只能有一个线程在执行这个函数

------解决方案--------------------
public synchronized void read()这说明同时只能有一个线程在执行这个函数 
你还在函数利用了wait?????
------解决方案--------------------
你干脆用vector不就得了,直接不用考虑多线程得问题
------解决方案--------------------
确实不懂你的意图....好像用不着wait(),notify()吧
再说构造每个Threadtestold对象的参数List是不是同一个啊
------解决方案--------------------
List 有一个 remove 方法! 你对这个方法加锁就可以了!

像这样

Java code
    public synchronized Object getItem(java.util.List list) {        Object obj = null;        if (list.size() <= 0)            return obj;        else            return list.remove(0);    }
------解决方案--------------------
Java code
public class Factory {    private static Factory factory;    private static Object classLock = Factory.class;    private Factory() {}    public static Factory getFactory() {        synchronized (classLock) {            if ( factory == null )                factory = new Factory();            return factory;        }    }}
  相关解决方案