线程中的run方法和start方法的区别


start:启动线程,真正实现了多线程       异步进行              不可以重复调用(会报错)
run:  只是个普通方法                 同步进行                     可以重复调用
例子:
class MyThread extends Thread{  
        public void run(){
            ...
        } 
    };
    MyThread mythread = new MyThread();
mythread.start()会启动一个新线程,并在新线程中运行run()方法
而mythread.run()则会直接在当前线程中运行run()方法,并不会启动一个新线程来运行run()。
通过一个简单示例演示它们之间的区别:

  // Demo.java 的源码
    class MyThread extends Thread{  
        public MyThread(String name) {
            super(name);
        }
     
        public void run(){
            System.out.println(Thread.currentThread().getName()+" is running");
        } 
    }; 
     
    public class Demo {  
        public static void main(String[] args) {  
            Thread mythread=new MyThread("mythread");
     
            System.out.println(Thread.currentThread().getName()+" call mythread.run()");
            mythread.run();
     
            System.out.println(Thread.currentThread().getName()+" call mythread.start()");
            mythread.start();
        }  
    }
  main call mythread.run()
    main is running
    main call mythread.start()
    mythread is running

结果说明:

(01) Thread.currentThread().getName()是用于获取“当前线程”的名字。当前线程是指正在cpu中调度执行的线程。

(02) mythread.run()是在“主线程main”中调用的,该run()方法直接运行在“主线程main”上。

(03) mythread.start()会启动“线程mythread”,“线程mythread”启动之后,会调用run()方法;此时的run()方法是运行在“线程mythread”上。
 

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...