/**寫四個線程 兩個線程加1兩個線程減1
*1線程的同步 synchronized
*2操作同一個變量 内部類
*/
public class ThreadMain {
int j=1;
public synchronized void inc()
{
j++;
System.out.println(Thread.currentThread().getName()+"inc:"+j);
}
public synchronized void dec()
{
j--;
System.out.println(Thread.currentThread().getName()+"dec"+j);
}
class T1 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
inc();
try {
Thread.sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class T2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
dec();
try {
Thread.sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadMain t=new ThreadMain();
T1 t1=t.new T1();
T2 t2=t.new T2();
Thread thread1=new Thread(t1,"加線程1");
thread1.start();
Thread thread2=new Thread(t1,"加線程2");
thread2.start();
Thread thread3=new Thread(t2,"減線程1");
thread3.start();
Thread thread4=new Thread(t2,"減線程2");
thread4.start();
}
}