import com.test.thread.Print; import java.util.concurrent.locks.Lock; public class bobbleSort extends Thread{
private int[] arr;
private static int taskCount = 0 ;
private final int id =taskCount ++;
private static int time;
public bobbleSort( int[] a ) {
arr =a;
start();
}
public void run() {
testBobbleSort.bsort( arr, id);
}
}
import com.test.thread.Print; import java.util.List; import java.util.ArrayList;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; public class testBobbleSort {
public static volatile List l = new ArrayList(); ;
public testBobbleSort() {
} public static void main(String[] args) {
int [][] p ={ {2,44,399,787,333,22,2,1,2,3,2,2,1},{55,3,12,6,8,90,79},{77,5,34,56,23,65,44,53}} ;
ExecutorService exe = Executors.newCachedThreadPool();
for( int i = 0 ; i < p.length ; i++ ) {
exe.execute(new bobbleSort(p[i]));
}
exe.shutdown();
PrintL();
Print.print(l.size());
}
public static void PrintL( ) {
for( int n = 0 ; n < l.size() ; n ++)
Print.print( l.get(n ));
}
public static synchronized void bsort( int[] arr , int id) {
int outer , inner , i ;
for( outer = arr.length-1 ; outer > 1 ; outer-- ){
for( i = 0 ; i < outer ; i++)
if( arr[i] > arr[i+1]){
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
StringBuilder stu = new StringBuilder( "#id==[" + id + "]--");
for( i = 0 ; i < arr.length ; i++ )
stu.append(arr[i]).append("-");
l.add(stu.toString());
}
} 我明明写了 synchronized
为什么 输出结果是:70%(SAME)
#id==[0]--1-1-2-2-2-2-2-3-22-44-333-399-787-
#id==[0]--1-1-2-2-2-2-2-3-22-44-333-399-787-
#id==[1]--3-6-8-12-55-79-90-
#id==[1]--3-6-8-12-55-79-90-
#id==[2]--5-23-34-44-53-56-65-77-
#id==[2]--5-23-34-44-53-56-65-77- 重复加了 一遍
private int[] arr;
private static int taskCount = 0 ;
private final int id =taskCount ++;
private static int time;
public bobbleSort( int[] a ) {
arr =a;
start();
}
public void run() {
testBobbleSort.bsort( arr, id);
}
}
import com.test.thread.Print; import java.util.List; import java.util.ArrayList;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; public class testBobbleSort {
public static volatile List l = new ArrayList(); ;
public testBobbleSort() {
} public static void main(String[] args) {
int [][] p ={ {2,44,399,787,333,22,2,1,2,3,2,2,1},{55,3,12,6,8,90,79},{77,5,34,56,23,65,44,53}} ;
ExecutorService exe = Executors.newCachedThreadPool();
for( int i = 0 ; i < p.length ; i++ ) {
exe.execute(new bobbleSort(p[i]));
}
exe.shutdown();
PrintL();
Print.print(l.size());
}
public static void PrintL( ) {
for( int n = 0 ; n < l.size() ; n ++)
Print.print( l.get(n ));
}
public static synchronized void bsort( int[] arr , int id) {
int outer , inner , i ;
for( outer = arr.length-1 ; outer > 1 ; outer-- ){
for( i = 0 ; i < outer ; i++)
if( arr[i] > arr[i+1]){
int temp;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
StringBuilder stu = new StringBuilder( "#id==[" + id + "]--");
for( i = 0 ; i < arr.length ; i++ )
stu.append(arr[i]).append("-");
l.add(stu.toString());
}
} 我明明写了 synchronized
为什么 输出结果是:70%(SAME)
#id==[0]--1-1-2-2-2-2-2-3-22-44-333-399-787-
#id==[0]--1-1-2-2-2-2-2-3-22-44-333-399-787-
#id==[1]--3-6-8-12-55-79-90-
#id==[1]--3-6-8-12-55-79-90-
#id==[2]--5-23-34-44-53-56-65-77-
#id==[2]--5-23-34-44-53-56-65-77- 重复加了 一遍
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货