/****
/**
*
*jdk 1.6
*
*/
public class DaoTest implements Runnable{
public static final int THEADS_MAX = 1000;
public static int THREAD_COUNT = 0;
public static byte[] syn = new byte[0];
public static long flag = 0;
public static void main(String[] args) {
//to do someting
//循环启动并发线程
for(; THREAD_COUNT< THEADS_MAX;THREAD_COUNT++){
new Thread(new DaoTest()).start();
}
// to do someting
}
@Override
public void run() {
synchronized (syn) {
try {
if(THREAD_COUNT<THEADS_MAX-1){//每个线程执行到此处暂停,并释放syn的对象锁
syn.wait();
}else{//最后一个线程启动后不再暂停,而是唤醒所有等待的线程,一起往下执行
//其实由于单核cpu不能真正地同时往下执行,而是为每个线程分配时间片轮训执行
//但是由于时间片很小,可以看作并发了
syn.notifyAll();
}
} catch (InterruptedException e) {
//to do someting
}
}
for(int i = 0; i<1000; i++){
// to do someting
System.out.println(flag++);
}
}
}
/**
*
*jdk 1.6
*
*/
public class DaoTest implements Runnable{
public static final int THEADS_MAX = 1000;
public static int THREAD_COUNT = 0;
public static byte[] syn = new byte[0];
public static long flag = 0;
public static void main(String[] args) {
//to do someting
//循环启动并发线程
for(; THREAD_COUNT< THEADS_MAX;THREAD_COUNT++){
new Thread(new DaoTest()).start();
}
// to do someting
}
@Override
public void run() {
synchronized (syn) {
try {
if(THREAD_COUNT<THEADS_MAX-1){//每个线程执行到此处暂停,并释放syn的对象锁
syn.wait();
}else{//最后一个线程启动后不再暂停,而是唤醒所有等待的线程,一起往下执行
//其实由于单核cpu不能真正地同时往下执行,而是为每个线程分配时间片轮训执行
//但是由于时间片很小,可以看作并发了
syn.notifyAll();
}
} catch (InterruptedException e) {
//to do someting
}
}
for(int i = 0; i<1000; i++){
// to do someting
System.out.println(flag++);
}
}
}