62,614
社区成员
发帖
与我相关
我的任务
分享
//开始
for (int i = 0; i < fList.size(); i++) {
final List<FndMenuEntriesIntDto> sortList = fndMenuEntriesIntDao.getListByMenuId(fList.get(i).getMenuId(), versionId);
new Thread(new Runnable() {
@Override
//线程1
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing1();
}
}
}).start();
new Thread(new Runnable() {
@Override
//线程2
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing2();
}
}
}).start();
}
}
package com.cyclicbarrier;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
/**
* @author wankun
* 多线程实现并发数组排序
*/
public class TestCyclicBarrier implements Runnable{
public static void main(String[] args) {
sortList();
}
public List list ;
public int pid;
public CyclicBarrier barrier;
public TestCyclicBarrier(List list,int pid,CyclicBarrier barrier) {
this.list = list;
this.pid = pid;
this.barrier = barrier;
}
@Override
public void run() {
System.out.println("线程"+pid+"开始排序list");
try {
dosomething(list);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.out.println("线程"+pid+"排序list结束");
try {
barrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
public void dosomething(List list) throws InterruptedException
{
System.out.println("排序数组");
Thread.sleep(5000);
}
public static void sortList()
{
List<Integer> list = new ArrayList<Integer>();
list.add(8);
list.add(4);
list.add(10);
CyclicBarrier barrier = new CyclicBarrier(2, new Runnable() {
public void run() {
System.out.println("两个线程排序List结束,执行其他");
}
});
new Thread(new TestCyclicBarrier(list,0,barrier)).start();
new Thread(new TestCyclicBarrier(list,1,barrier)).start();
}
}
final List<FndMenuEntriesIntDto> sortList = fndMenuEntriesIntDao.getListByMenuId(fList.get(i).getMenuId(), versionId);
Thread th1 = new Thread(new Runnable() {
@Override
//线程1
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing1();
}
}
});
th1.start();
th1.join();
Thread th2 = new Thread(new Runnable() {
@Override
//线程2
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing2();
}
}
});
th2.start();
th2.join();
}
这样的话就可以了吗?