整个过程应该是这样的:
程序加载main函数,再生成线程任务对象SetNameThreadDemo并指向tt,接着设置对象的继承的成员属性setName(),接着tt.start()开启新线程与main线程开始抢资源运行,因为没有同步所以会出现一些安全问题(在printMsg这里只有一个sop name的语句,故看起来正常),与此同时main线程也执行后面的语句,执行tt.printMsg()方法是SetNameThreadDemo正常调用自己的成员方法,只不过执行线程是main,此时打印的线程名字也当然就是main了,再详细说就是我们打印的是线程名而非调用对象名字。 |