10. public class Starter extends Thread {
11. private int x= 2;
12. public static void main(String[] args) throws Exception {
13. new Starter().makeItSo();
14. }
15. public Starter() {
16. x=5;
17. start();
18. }
19. public void makeItSo() throws Exception {
20. join();
21. x=x- 1;
22. System.out.println(x);
23. }
24. public void run() { x *= 2; }
25. }这个类执行的结果是什么呢?书上说是9,但觉得好像应该是不能确定才对,求高手解释一下吧
11. private int x= 2;
12. public static void main(String[] args) throws Exception {
13. new Starter().makeItSo();
14. }
15. public Starter() {
16. x=5;
17. start();
18. }
19. public void makeItSo() throws Exception {
20. join();
21. x=x- 1;
22. System.out.println(x);
23. }
24. public void run() { x *= 2; }
25. }这个类执行的结果是什么呢?书上说是9,但觉得好像应该是不能确定才对,求高手解释一下吧
注意public void makeItSo() throws Exception {
20. join();
21. x=x- 1;
22. System.out.println(x);
23. }
这个方法是主线程执行的.创建的线程中run()方法内的内容才是新创建的线程负责执行.
在构造方法中启动一个新的线程,它一旦开始就去执行run中的x *= 2;
主线程中调用makeItSo();
注意join是Starter的,会等待这个新线程结束,结束后x=10.
x=x-1;
x=9
问下这个join是谁加在了谁后面啊?
Thread t = new Thread();
t.start();
t.join();
//t.join()意味着:将当前线程加入到t的结束,即在当前线程再次运行之前线程t已经完成
那么, makeItSo()方法中的join()即是this.join();那是什么意思,该怎么解释呢?