欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于运用多线程遇到的问题

程序员文章站 2022-05-02 16:55:51
...

1.错误在run()和start()的调用上
下面错误案例

public static void main(String[] args)  {
        Thread theThread=new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    System.out.println("1");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        theThread.run();
        System.out.println("2");
    }

结果没有2输出:
关于运用多线程遇到的问题
我在开发过程前期遇到这个问题百思不得解,后面又翻了一遍书的多线程才发现我搞混了。
多线程是重写run方法,运行的时候是xxThread.start()
调用run(),运行还是原来的线程
正确是:

public static void main(String[] args)  {
        Thread theThread=new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    System.out.println("1");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        theThread.start();//改动的地方
        System.out.println("2");
    }
}

结果:
关于运用多线程遇到的问题

泪目,一晚上查bug不如去书上重翻一遍
希望各位道友不要犯这样的低级错误