class A extends
Thread {
String[] sa;
public A(String[] sa) {this.sa = sa;}
public void run() {
synchronized (sa) {System.out.print(sa[0] + sa[1] + sa[2]);}
}}
class B {
private static String[] sa = new String[]{"X","Y","Z"};
public static void main (String[] args) {
synchronized (sa) {
Thread t1 = new A(sa); t1.start();
sa[0] = "A"; sa[1] = "B"; sa[2] = "C"; //1
}}}
acc to the answer given output is ABC. explanation given is that since lock on object sa is only released by main after executing 1.
i have a query . Arent 2 objects (sa in B and sa in A) different and hence locks are different and hence output shd be XYZ. someone kindly reply