class ThreadInc implements Runnable{
@Override
public void run() {
ThreadDemo.printInc(5);
}
}
class ThreadDec implements Runnable{
@Override
public void run() {
ThreadDemo.printDec(3);
}
}
public class ThreadDemo {
private static int j = 0;
public synchronized static void printInc(int num){
for(int i = 0 ; i<num ; i++){
j++;
System.out.println("in inc j == " + j + " "+ Thread.currentThread().getName());
}
}
public synchronized static void printDec(int num){
for(int i = 0;i<num;i++){
j--;
System.out.println("in dec j == " + j + " "+ Thread.currentThread().getName());
}
}
public static void main(String[] args) {
ThreadInc i = new ThreadInc();
ThreadDec d = new ThreadDec();
new Thread(i).start();
new Thread(i).start();
new Thread(d).start();
new Thread(d).start();
}
}输出结果为:
in inc j == 1 Thread-1
in inc j == 2 Thread-1
in inc j == 3 Thread-1
in inc j == 4 Thread-1
in inc j == 5 Thread-1
in dec j == 4 Thread-3
in dec j == 3 Thread-3
in dec j == 2 Thread-3
in inc j == 3 Thread-0
in inc j == 4 Thread-0
in inc j == 5 Thread-0
in inc j == 6 Thread-0
in inc j == 7 Thread-0
in dec j == 6 Thread-2
in dec j == 5 Thread-2
in dec j == 4 Thread-2为什么执行完第一个new Thread(i).start();之后不执行第二个new Thread(i).start();
启动多个线程之后 是由OS决定执行哪个线程么
谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货