今天去高*面试了一下,让人很气愤,一个不懂技术的面试官怎么干的,我记录下来给大家留作记录
问:classA 有两个synchronized methodA,methodB,objA = new classA 问objA.methodA,objA.methodB
线程安全吗? 面试官回答不安全
我都不回答了,看我的代码和输出结果,以后大家出去面试对这样的面试官要鄙视一下
package com.example;
public class Sync {
public synchronized String getA() throws InterruptedException {
System.out.println(Thread.currentThread().getName());
Thread.currentThread().sleep(1000);
System.out.println("-----------------------------");
return "-----------a";
}
public synchronized String getB() throws InterruptedException {
System.out.println(Thread.currentThread().getName());
Thread.currentThread().sleep(1000);
System.out.println("-----------------------------");
return "-----------b";
}
public static void main(String[] args) {
final Sync sync = new Sync();
final Sync sync2 = new Sync();
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println(sync.getA());
} catch (InterruptedException e) {
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println(sync.getB());
} catch (InterruptedException e) {
}
}
}).start();
}
}
Thread-1
-----------------------------
-----------b
Thread-0
-----------------------------
-----------a