package com.tester;
public class Thread3 {
class Inner {
private void m4t1() {
int i = 5;
while (i– > 0) {
System.out.println(Thread.currentThread().getName()
+ ” : Inner.m4t1()=” + i);
try {
Thread.sleep(500);
} catch (InterruptedException ie) {
}
}
}
private void m4t2() {
int i = 5;
while (i– > 0) {
System.out.println(Thread.currentThread().getName()
+ ” : Inner.m4t2()=” + i);
try {
Thread.sleep(500);
} catch (InterruptedException ie) {
}
}
}
//会同步,同一个对象只有一把锁
// private synchronized void m4t2() {
// int i = 5;
// while (i– > 0) {
// System.out.println(Thread.currentThread().getName()
// + ” : Inner.m4t2()=” + i);
// try {
// Thread.sleep(500);
// } catch (InterruptedException ie) {
// }
// }
// }
}
private void m4t1(Inner inner) {
synchronized (inner) { // 使用对象锁
inner.m4t1();
}
}
private void m4t2(Inner inner) {
inner.m4t2();
}
// 不会同步,因为锁的对象不同
// private synchronized void m4t2(Inner inner) {
// inner.m4t2();
// }
public static void main(String[] args) {
final Thread3 myt3 = new Thread3();
final Inner inner = myt3.new Inner();
Thread t1 = new Thread(new Runnable() {
public void run() {
myt3.m4t1(inner);
}
}, “t1”);
Thread t2 = new Thread(new Runnable() {
public void run() {
myt3.m4t2(inner);
}
}, “t2”);
t1.start();
t2.start();
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100540.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...