设计 4个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序
package com.sshhsun.javathread.day01;
public class ThreadTest1 {
private int j = 1;
public static void main(String[] args) {
ThreadTest1 test1 = new ThreadTest1();
Inc inc = test1.new Inc();
Dec dec = test1.new Dec();
for (int i = 0; i < 2; i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
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);
}
class Inc implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
inc();
}
}
}
class Dec implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
dec();
}
}
}
}
运行结果
Thread-0–inc:2
Thread-0–inc:3
Thread-0–inc:4
Thread-0–inc:5
Thread-0–inc:6
Thread-0–inc:7
Thread-0–inc:8
Thread-0–inc:9
Thread-0–inc:10
Thread-0–inc:11
Thread-3–dec:10
Thread-3–dec:9
Thread-3–dec:8
Thread-3–dec:7
Thread-3–dec:6
Thread-3–dec:5
Thread-3–dec:4
Thread-3–dec:3
Thread-3–dec:2
Thread-3–dec:1
Thread-1–dec:0
Thread-1–dec:-1
Thread-1–dec:-2
Thread-1–dec:-3
Thread-1–dec:-4
Thread-1–dec:-5
Thread-1–dec:-6
Thread-1–dec:-7
Thread-1–dec:-8
Thread-1–dec:-9
Thread-2–inc:-8
Thread-2–inc:-7
Thread-2–inc:-6
Thread-2–inc:-5
Thread-2–inc:-4
Thread-2–inc:-3
Thread-2–inc:-2
Thread-2–inc:-1
Thread-2–inc:0
Thread-2–inc:1