设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。
package com.feipin.test;
/**
* Title:设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,执行100次
*
* Description:
*
* @version 1.0
*/
public class ThreadTest {
private int j;//定义成员变量j
public static void main(String args[]) {
ThreadTest tt = new ThreadTest();
Inc inc = tt.new Inc();//调用内部"加类"
Dec dec = tt.new Dec();//调用内部"减类"
Thread ThreadInc1 = new Thread(inc);//创建"加法"线程类1
Thread ThreadInc2 = new Thread(inc);//创建"加法"线程类2
//线程就绪
ThreadInc1.start();
ThreadInc2.start();
Thread ThreadDec1 = new Thread(dec);//创建"减法"线程类1
Thread ThreadDec2 = new Thread(dec);//创建"减法"线程类2
//线程就绪
ThreadDec1.start();
ThreadDec2.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 {
public void run() {
for (int i = 0; i < 100; i++) {
inc();
}
}
}
class Dec implements Runnable {
public void run() {
for (int i = 0; i < 100; i++) {
dec();
}
}
}
}