一個類有兩個方法,其中一個是同步的,另外一個是非同步的;
如今又兩個線程A和B,請問:當線程A訪問此類的同步方法時,線程B是否能訪問此類的非同步方法?ide
答案:能夠this
驗證spa
package com.my.test2; public class ClassA { public synchronized void do1() { //延遲打印,爲了更明顯 try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("synchronized do1"); } public void do2() { System.out.println("do2"); } } package com.my.test2; public class Thread1 extends Thread{ private ClassA classA; public Thread1(ClassA classA) { this.classA = classA; } @Override public void run() { classA.do1(); } } package com.my.test2; public class Thread2 extends Thread{ private ClassA classA; public Thread2(ClassA classA) { this.classA = classA; } @Override public void run() { classA.do2(); } } package com.my.test2; public class Test { /** * @param args */ public static void main(String[] args) { ClassA classA = new ClassA(); Thread1 thread1 = new Thread1(classA); Thread2 thread2 = new Thread2(classA); thread1.start(); thread2.start(); } }
執行結果:線程
do2
synchronized do1 //延遲3秒後輸出code