这个很正常啊,t.start()只是启动了一个子线程并且去竞争CPU资源,这个时候就是这个子线程和主线程在竞争,所以结果有两种情况:
如果子线程先竞争到了cpu,那么就会先执行 m1,结果就是 1000,i=1000
如果主线程先竞争到了cpu,那么就会先执行 m2,结果就是 100,i=1000
你在eclipse和控制台下多运行几次,这两种情况应该都会出现的。
这不是很正常嘛,多线程程序的运行并不保证每次执行的顺序都一样。黑窗口是先执行了m1(),eclipse里先执行了m2()。