public class ThreadTest {
// 定义变量,用于检测线程调度的先后次序
private int j;
public static void main(String args[]) {
ThreadTest tt = new ThreadTest();
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
// 循环两次,每次启动2个线程,总共有4个线程
for (int i = 0; i < 2; i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
// synchronized 线程同步 同一时间内只能执行这个类中的一个方法
private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
}
private synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + "-dec:" + j);
}
// 实现Runnable接口 java中有2中方法实现线程 1、扩展java.lang.Thread类
// 2、实现java.lang.Runnable接口
class Inc implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
inc();
}
}
}
class Dec implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
dec();
}
}
}
}