public class Demo2 implements Runnable{
Lisi lisi = new Lisi();
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
lisi.name(Thread.currentThread().getName());
}
public static void main(String[] args) {
Demo2 demo2 = new Demo2();
Thread t1 = new Thread(demo2);
Thread t2 = new Thread(demo2);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
class Lisi{
private int num = 0;
public synchronized void name(String name) {
// synchronized (this) {// 互斥锁 或这样写 public synchronized void name 执行这个方法过程中当前对象被锁定了 (在此例中 lisi被锁定)
num ++;
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(name+",你是第几个"+num+"使用线程的人");
// }
}
}
}
Lisi lisi = new Lisi();
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
lisi.name(Thread.currentThread().getName());
}
public static void main(String[] args) {
Demo2 demo2 = new Demo2();
Thread t1 = new Thread(demo2);
Thread t2 = new Thread(demo2);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
class Lisi{
private int num = 0;
public synchronized void name(String name) {
// synchronized (this) {// 互斥锁 或这样写 public synchronized void name 执行这个方法过程中当前对象被锁定了 (在此例中 lisi被锁定)
num ++;
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(name+",你是第几个"+num+"使用线程的人");
// }
}
}
}