![Java多线程编程核心技术(第3版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/745/42637745/b_42637745.jpg)
上QQ阅读APP看书,第一时间看更新
2.1.10 非同步方法:不使用synchronized重写方法
重写方法如果不使用synchronized关键字,即非同步方法,使用后变成同步方法。
创建测试项目synNotExtends,类Main.java代码如下:
package service; public class Main { synchronized public void serviceMethod() { try { System.out.println("int main 下一步sleep begin threadName=" + Thread.currentThread().getName() + " time=" + System.currentTimeMillis()); Thread.sleep(5000); System.out.println("int main 下一步sleep end threadName=" + Thread.currentThread().getName() + " time=" + System.currentTimeMillis()); } catch (InterruptedException e) { e.printStackTrace(); } } }
类Sub.java代码如下:
package service; public class Sub extends Main { @Override public void serviceMethod() { try { System.out.println("int sub 下一步sleep begin threadName=" + Thread.currentThread().getName() + " time=" + System.currentTimeMillis()); Thread.sleep(5000); System.out.println("int sub 下一步sleep end threadName=" + Thread.currentThread().getName() + " time=" + System.currentTimeMillis()); super.serviceMethod(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
类MyThreadA.java和MyThreadB.java代码如图2-17所示。
![](https://epubservercos.yuewen.com/204B22/22139293909121606/epubprivate/OEBPS/Images/2-17.jpg?sign=1739306227-FsR9V2XiwBgeJFh2lb2b8OJ5Icv216O8-0-1437a6d55bd6cd9a04782579548c2d69)
图2-17 两个线程代码
类Test.java代码如下:
package controller; import service.Sub; import extthread.MyThreadA; import extthread.MyThreadB; public class Test { public static void main(String[] args) { Sub subRef = new Sub(); MyThreadA a = new MyThreadA(subRef); a.setName("A"); a.start(); MyThreadB b = new MyThreadB(subRef); b.setName("B"); b.start(); } }
程序运行结果如图2-18所示。
![](https://epubservercos.yuewen.com/204B22/22139293909121606/epubprivate/OEBPS/Images/2-18.jpg?sign=1739306227-UQzx3W5eXOJP1VZa9P5yBDunWx7Ugslo-0-83773af29824b3b3564a3a6585ae179d)
图2-18 运行效果
从输出结果可以看到,这里是以异步方式输出,所以还得在子类的重写方法中添加synchronized关键字,如图2-19所示。
![](https://epubservercos.yuewen.com/204B22/22139293909121606/epubprivate/OEBPS/Images/2-19.jpg?sign=1739306227-LGaRt4kSiWSKpFJgFgSTkUUQfqrVaLIY-0-d097f68a5b18958df53427e03a662f1f)
图2-19 同步输出