打字猴:1.700449485e+09
1700449485
1700449486 ——Steve Paul Jobs(史蒂夫·乔布斯)
1700449487
1700449488 多线程技术可以更好地利用系统资源,减少对用户的响应时间,提高系统的性能和效率,但同时也增加了系统的复杂性和运维难度,特别是在高并发、大压力、高可靠性的项目中,线程资源的同步、抢占、互斥等都需要慎重考虑,以避免产生性能损耗和线程死锁。
1700449489
1700449490
1700449491
1700449492
1700449493 编写高质量代码:改善Java程序的151个建议 [:1700438193]
1700449494 编写高质量代码:改善Java程序的151个建议 建议118:不推荐覆写start方法
1700449495
1700449496 多线程比较简单的实现方式是继承Thread类,然后覆写run方法,在客户端程序中通过调用对象的start方法即可启动一个线程,这是多线程程序的标准写法。不知道读者是否还能回想起自己的第一个多线程demo呢?估计一般是这样写的:
1700449497
1700449498 class MultiThread extends Thread{
1700449499
1700449500 @Override
1700449501
1700449502 public void start(){
1700449503
1700449504 //调用线程体
1700449505
1700449506 run();
1700449507
1700449508 }
1700449509
1700449510 @Override
1700449511
1700449512 public void run(){
1700449513
1700449514 //MultiThread do something.
1700449515
1700449516 }
1700449517
1700449518 }
1700449519
1700449520 覆写run方法,这好办,写上自己的业务逻辑即可,但为什么要覆写start方法呢?最常见的理由是:要在客户端中调用start方法启动线程,不覆写start方法怎么启动run方法呢?于是乎就覆写了start方法,在方法内调用run方法。客户端代码是一个标准程序,代码如下:
1700449521
1700449522 public static void main(String[]args){
1700449523
1700449524 //多线程对象
1700449525
1700449526 MultiThread multiThread=new MultiThread();
1700449527
1700449528 //启动多线程
1700449529
1700449530 multiThread.start();
1700449531
1700449532 }
1700449533
1700449534 相信读者都能看出这是一个错误的多线程应用,main方法根本就没有启动一个子线程,整个应用程序中只有一个主线程在运行,并不会创建任何其他的线程。对此,有很简单的解决办法,只要删除MultiThread类中的start方法即可。
[ 上一页 ]  [ :1.700449485e+09 ]  [ 下一页 ]