/**写四个线程 两个线程加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();
}
}