最近在写程序的时候,突然感觉以前对线程的了解太少了。对多线程数据共享和单线程池的概念给弄混了!
(1)单线程池作用主要是用来调度当前情况下只允许一个线程运行,但是可以压入多个线程,这些线程彼此间应该是无关的,不应该存在数据共享
参考 http://wawlian.iteye.com/blog/1315256
(2)多线程数据共享,多个线程共享数据
参考 http://java.chinaitlab.com/line/10271.html
http://blog.csdn.net/com360/article/details/6795060
(3)多个线程共享数据,但多个线程要串联执行
private static ArrayList<ExcelTable> list = new ArrayList<ExcelTable>();
pivate static volatile int controlInt = 0;
public static void teleSegSort(final String filePath,final String splitSign,final int colNum,final int phoneColIndex,final int sortByColIndex,final MsgCallback callback){
class t1 extends Thread{
public void run() {
if (controlInt==0) {
//list赋值
controlInt = 1; }
};
}
class t2 extends Thread{
public void run() {
boolean isrunning = true;
while(isrunning){
if(controlInt==1){
//对list 排序
controlInt = 2;
isrunning=false; } } } };
class t3 extends Thread{
public void run() {
boolean isrunning = true;
while (isrunning) {
if(controlInt==2){
//list排序后输出
controlInt = 3; }
}
}
};
controlInt = 0;
new t1().start();
new t2().start();
new t3().start();
}