多线程应用之调用start()方法和run()方法的区别

     今天在做项目的时候,遇到一个问题,两个一模一样的demo,运行出来的效果却一点也不一样,找了半天,就是有一行代码不同,一个是thread.start();一个是thread.run();和我预计的一样,就是这里的问题,我的项目是有子线程执行耗时操作的。如果世界在主线程中调用子线程的run()方法时,主界面有假死的现象。

     归根结底,如果我们直接调用子线程的run()方法,其方法还是运行在主线程中,代码在程序中是顺序执行的,所以不会有解决耗时操作的问题。所以不能直接调用线程的run()方法,只有子线程开始了,才会有异步的效果。当thread.start()方法执行了以后,子线程才会执行run()方法,这样的效果和在主线程中直接调用run()方法的效果是截然不同的。

     

原文地址:https://www.cnblogs.com/deng-c-q/p/5412285.html