62,614
社区成员
发帖
与我相关
我的任务
分享
package debug;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
T1 t11 = new T1();
T2 t22 = new T2();
Thread t1 = new Thread(t11);
Thread t2 = new Thread(t22);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
}
class T1 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
Timer1 time = new Timer1();
time.add(Thread.currentThread().getName());
try{
Thread.sleep(1000);
}catch(InterruptedException e){
System.out.println(Thread.currentThread().getName());
}
time.minus(Thread.currentThread().getName());
}
}
class T2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
Timer1 time = new Timer1();
time.minus(Thread.currentThread().getName());
try{
Thread.sleep(1000);
}catch(InterruptedException e){System.out.println(Thread.currentThread().getName());}
time.add(Thread.currentThread().getName());
}
}
class Timer1{
public static int num = 0;
public void add(String name){
System.out.println("before add() name: " + name +" num: " + Timer1.num);
Timer1.num += 1;
System.out.println("after add() name: " + name +" num: " + Timer1.num);
System.out.println("name: " + name +" num: " + Timer1.num);
}
public void minus(String name){
System.out.println("before minus() name: " + name +" num: " + Timer1.num);
Timer1.num -= 1;
System.out.println("after minus() name: " + name +" num: " + Timer1.num);
System.out.println("name: " + name +" num: " + Timer1.num);
}
}
class Timer1{
public static int num = 0;
public synchronized void add(String name){
System.out.println("before add() name: " + name +" num: " + Timer1.num);
Timer1.num += 1;
System.out.println("after add() name: " + name +" num: " + Timer1.num);
System.out.println("name: " + name +" num: " + Timer1.num);
}
public synchronized void minus(String name){
System.out.println("before minus() name: " + name +" num: " + Timer1.num);
Timer1.num -= 1;
System.out.println("after minus() name: " + name +" num: " + Timer1.num);
System.out.println("name: " + name +" num: " + Timer1.num);
}
}
package debug;
public class Test {
public static void main(String[] args) {
T1 t11 = new T1();
T2 t22 = new T2();
Thread t1 = new Thread(t11);
Thread t2 = new Thread(t22);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
}
class T1 implements Runnable {
@Override
public void run() {
Timer1 time = new Timer1();
time.add(Thread.currentThread().getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println(Thread.currentThread().getName());
}
time.minus(Thread.currentThread().getName());
}
}
class T2 implements Runnable {
@Override
public void run() {
Timer1 time = new Timer1();
time.minus(Thread.currentThread().getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println(Thread.currentThread().getName());
}
time.add(Thread.currentThread().getName());
}
}
class Timer1 {
public static int num = 0;
// 使用synchronized关键字,表示add和minus不能被同时调用,只能按顺序调用
synchronized public void add(String name) {
System.out.println("before add() name: " + name + " num: " + Timer1.num);
Timer1.num += 1;
System.out.println("after add() name: " + name + " num: " + Timer1.num);
System.out.println("name: " + name + " num: " + Timer1.num);
}
synchronized public void minus(String name) {
System.out.println("before minus() name: " + name + " num: " + Timer1.num);
Timer1.num -= 1;
System.out.println("after minus() name: " + name + " num: " + Timer1.num);
System.out.println("name: " + name + " num: " + Timer1.num);
}
}