Method One
public class ThreadTest1 {
private int J;
public static void Main (String args[]) {
ThreadTest1 tt = new ThreadTest1 ();
INC INC = Tt.new Inc. ();
Dec Dec = tt.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 {
public void Run () {
for (int i = 0; i < 5; i++) {
Inc. ();
}
}
}
Class Dec implements Runnable {
public void Run () {
for (int i = 0; i < 5; i++) {
Dec ();
}
}
}
}
Method Two
----------a-------------to write again
public class A {
Jmanager j = new Jmanager ();
public static void Main () {
New A (). Call ();
}
void Call () {
for (int i = 0; i < 2; i++) {
New Thread (New Runnable () {
public void Run () {
while (true) {
J.accumulate ();
}
}
). Start ();
New Thread (New Runnable () {
public void Run () {
while (true) {
J.subtract ();
}
}
). Start ();
}
}
}
Class Jmanager {
private int j = 2;
Public synchronized void Subtract () {
j--;
}
Public synchronized void accumulate () {
j + +;
}
}