java - fo循环中增加Runnable线程
阿神
阿神 2017-04-18 10:17:32
0
2
547

1 我有一个程序需要在for 循环中增加 Runnable,现在发现他执行的顺序是从上往下 ,不是多线程的方式执行

2 代码如下
public void addUserACard() {

    
    ThreadLbData tLbData = null;
    DbBean dbBean = null ;
    
    List<DataBase> listData = dataDAO.findHql(" from DataBase where state = '1'  order by createDate desc ");
    DataBase data = null ;
    if(listData != null && listData.size()> 0){
        for (int i = 0; i < listData.size(); i++) {
            data = listData.get(i);
            dbBean =  createDbBean(data);
            tLbData = new ThreadLbData(dbBean);
            tLbData.run();
        }
    }
}

}

@SuppressWarnings("unchecked")
public class ThreadLbData implements Runnable {

private DbBean dataBase;
private Map map = new HashMap();
private static ConnectionPools connectionPools = ConnectionPools.getInstance();

public ThreadLbData(DbBean dataBase) {
    this.dataBase = dataBase;
}



public void run() {
    
    Connection conn = connectionPools.getConnectionOracle(); // 获得JDBC链接;
    try {
        String lbMaxId = this.getSynLogMaxId(dataBase, conn);
        Map map = getLbDate(lbMaxId);
        saveAll((List<ReaderCard>) map.get("listCard"), (List<Userinfo>)   map.get("listUser"), conn);
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        connectionPools.close(null, null, conn);
    }
}

}

3 想让大神帮我看看,线程的run能不能并行,并且帮我改进,跪谢!

阿神
阿神

闭关修行中......

모든 응답(2)
黄舟

스레드풀을 활용해보세요!

으아아아
으아아아

Executors.newFixedThreadPool(10)은 고정 크기 10의 스레드 풀을 생성합니다.
그런 다음 executorService.execute( Runnable runnable)을 통해 제출합니다. 최대 10개의 작업을 병렬로 실행할 수 있습니다. 더 많은 병렬 스레드가 필요한 경우 Executors.newFixedThreadPool(threadCount)의 매개변수를 더 크게 설정할 수 있습니다.


Runnable 인터페이스와 Thread 클래스를 혼동했어야 한다고 불평하고 싶습니다. Runnable 인터페이스를 구현하는 클래스가 새 스레드에서 실행된다는 의미는 아닙니다. Runnable을 새 스레드에 명시적으로 제출해야 합니다. . executorService.execute(runnable) 또는 new Thread(runnable).start()와 같은 실행.

刘奇

run 메소드는 직접 호출할 수 없으며 Thread.start 메소드를 통해 스레드를 실행해야 합니다. run 메소드를 직접 호출하는 것과 일반 메소드를 호출하는 것에는 차이가 없습니다.

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿