zoukankan      html  css  js  c++  java
  • java学习之- 创建线程run和start特点

    标签(空格分隔): run,start


    为什么做run方法的覆盖?

    1.Thread类用于描述线程,该类就定义一个功能用于存储线程要运行的代码,该存储功能就是run方法;
    也就是说Thread种的run方法,用于存储线程要运行的代码.
    2.复写run方法的目的:将代码存储在run方法,让线程运行;

    • 问题:
      如下例子我们不调用start而是调用run方法会有什么不同?
    class Demo extends Thread{
        public void run(){//将运行的代码放在run方法中
            for(int x=0;x<60;x++) {
                System.out.println("demo run-----"+x);
            }
        }
    }
    class ThreadDemo{
    
        public static void main(String[] args){
            Demo d= new Demo();//创建好一个线程
            d.run();
            for(int x=0;x<60;x++){
                System.out.println("helloworld!----"+x);
            }
        }
    }
    

    执行结果:

    demo run-----0
    demo run-----1
    demo run-----2
    demo run-----3
    demo run-----4
    demo run-----5
    demo run-----6
    demo run-----7
    demo run-----8
    demo run-----9
    demo run-----10
    demo run-----11
    demo run-----12
    demo run-----13
    demo run-----14
    demo run-----15
    demo run-----16
    demo run-----17
    demo run-----18
    demo run-----19
    demo run-----20
    demo run-----21
    demo run-----22
    demo run-----23
    demo run-----24
    demo run-----25
    demo run-----26
    demo run-----27
    demo run-----28
    demo run-----29
    demo run-----30
    demo run-----31
    demo run-----32
    demo run-----33
    demo run-----34
    demo run-----35
    demo run-----36
    demo run-----37
    demo run-----38
    demo run-----39
    demo run-----40
    demo run-----41
    demo run-----42
    demo run-----43
    demo run-----44
    demo run-----45
    demo run-----46
    demo run-----47
    demo run-----48
    demo run-----49
    demo run-----50
    demo run-----51
    demo run-----52
    demo run-----53
    demo run-----54
    demo run-----55
    demo run-----56
    demo run-----57
    demo run-----58
    demo run-----59
    helloworld!----0
    helloworld!----1
    helloworld!----2
    helloworld!----3
    helloworld!----4
    helloworld!----5
    helloworld!----6
    helloworld!----7
    helloworld!----8
    helloworld!----9
    helloworld!----10
    helloworld!----11
    helloworld!----12
    helloworld!----13
    helloworld!----14
    helloworld!----15
    helloworld!----16
    helloworld!----17
    helloworld!----18
    helloworld!----19
    helloworld!----20
    helloworld!----21
    helloworld!----22
    helloworld!----23
    helloworld!----24
    helloworld!----25
    helloworld!----26
    helloworld!----27
    helloworld!----28
    helloworld!----29
    helloworld!----30
    helloworld!----31
    helloworld!----32
    helloworld!----33
    helloworld!----34
    helloworld!----35
    helloworld!----36
    helloworld!----37
    helloworld!----38
    helloworld!----39
    helloworld!----40
    helloworld!----41
    helloworld!----42
    helloworld!----43
    helloworld!----44
    helloworld!----45
    helloworld!----46
    helloworld!----47
    helloworld!----48
    helloworld!----49
    helloworld!----50
    helloworld!----51
    helloworld!----52
    helloworld!----53
    helloworld!----54
    helloworld!----55
    helloworld!----56
    helloworld!----57
    helloworld!----58
    helloworld!----59
    
    • 无论运行多少遍都是这样的,
      上述的执行的条线就是和一般的程序一样了,run仅仅是对象调用,单线程程序而start是开启线程并执行该线程的run方法;
    • 以上问题大家会在面试中经常被问到:调用start和调用run方法的区别:
      这里:run方法是普通的单线程序,无论程序运行多少遍执行的结果都是一样的;
      而start的方法:是开启线程并执行该线程的run方法,多线程,每次运行的结果都不一样;

    练习:创建两个线程和主线程交替运行:

    class Demo extends Thread{
        private String name;
        Demo(String name){
            this.name=name;
        }
        public void run(){//将运行的代码放在run方法中
            for(int x=0;x<60;x++) {
                System.out.println(name+"demo run-----"+x);
            }
        }
    }
    class ThreadDemo{
    
        public static void main(String[] args){
            Demo d1= new Demo("one");//创建好一个线程
            Demo d2= new Demo("two");
            d1.start();
            d2.start();
            for(int x=0;x<60;x++){
                System.out.println("helloworld!----"+x);
            }
        }
    }
    

    执行结果:

    onedemo run-----0
    onedemo run-----1
    onedemo run-----2
    onedemo run-----3
    onedemo run-----4
    onedemo run-----5
    onedemo run-----6
    onedemo run-----7
    onedemo run-----8
    onedemo run-----9
    onedemo run-----10
    onedemo run-----11
    onedemo run-----12
    onedemo run-----13
    onedemo run-----14
    onedemo run-----15
    onedemo run-----16
    onedemo run-----17
    onedemo run-----18
    onedemo run-----19
    onedemo run-----20
    onedemo run-----21
    onedemo run-----22
    onedemo run-----23
    onedemo run-----24
    onedemo run-----25
    onedemo run-----26
    onedemo run-----27
    onedemo run-----28
    twodemo run-----0
    twodemo run-----1
    twodemo run-----2
    twodemo run-----3
    twodemo run-----4
    twodemo run-----5
    twodemo run-----6
    twodemo run-----7
    twodemo run-----8
    twodemo run-----9
    onedemo run-----29
    twodemo run-----10
    twodemo run-----11
    twodemo run-----12
    twodemo run-----13
    twodemo run-----14
    twodemo run-----15
    twodemo run-----16
    twodemo run-----17
    twodemo run-----18
    twodemo run-----19
    twodemo run-----20
    twodemo run-----21
    twodemo run-----22
    twodemo run-----23
    twodemo run-----24
    twodemo run-----25
    twodemo run-----26
    twodemo run-----27
    twodemo run-----28
    twodemo run-----29
    twodemo run-----30
    twodemo run-----31
    twodemo run-----32
    twodemo run-----33
    twodemo run-----34
    twodemo run-----35
    twodemo run-----36
    twodemo run-----37
    twodemo run-----38
    twodemo run-----39
    twodemo run-----40
    twodemo run-----41
    twodemo run-----42
    twodemo run-----43
    twodemo run-----44
    twodemo run-----45
    twodemo run-----46
    twodemo run-----47
    twodemo run-----48
    twodemo run-----49
    twodemo run-----50
    twodemo run-----51
    twodemo run-----52
    twodemo run-----53
    twodemo run-----54
    helloworld!----0
    twodemo run-----55
    onedemo run-----30
    twodemo run-----56
    twodemo run-----57
    twodemo run-----58
    twodemo run-----59
    helloworld!----1
    onedemo run-----31
    onedemo run-----32
    onedemo run-----33
    onedemo run-----34
    onedemo run-----35
    onedemo run-----36
    onedemo run-----37
    onedemo run-----38
    onedemo run-----39
    onedemo run-----40
    onedemo run-----41
    onedemo run-----42
    onedemo run-----43
    onedemo run-----44
    onedemo run-----45
    onedemo run-----46
    onedemo run-----47
    onedemo run-----48
    onedemo run-----49
    onedemo run-----50
    onedemo run-----51
    onedemo run-----52
    onedemo run-----53
    onedemo run-----54
    onedemo run-----55
    onedemo run-----56
    onedemo run-----57
    onedemo run-----58
    onedemo run-----59
    helloworld!----2
    helloworld!----3
    helloworld!----4
    helloworld!----5
    helloworld!----6
    helloworld!----7
    helloworld!----8
    helloworld!----9
    helloworld!----10
    helloworld!----11
    helloworld!----12
    helloworld!----13
    helloworld!----14
    helloworld!----15
    helloworld!----16
    helloworld!----17
    helloworld!----18
    helloworld!----19
    helloworld!----20
    helloworld!----21
    helloworld!----22
    helloworld!----23
    helloworld!----24
    helloworld!----25
    helloworld!----26
    helloworld!----27
    helloworld!----28
    helloworld!----29
    helloworld!----30
    helloworld!----31
    helloworld!----32
    helloworld!----33
    helloworld!----34
    helloworld!----35
    helloworld!----36
    helloworld!----37
    helloworld!----38
    helloworld!----39
    helloworld!----40
    helloworld!----41
    helloworld!----42
    helloworld!----43
    helloworld!----44
    helloworld!----45
    helloworld!----46
    helloworld!----47
    helloworld!----48
    helloworld!----49
    helloworld!----50
    helloworld!----51
    helloworld!----52
    helloworld!----53
    helloworld!----54
    helloworld!----55
    helloworld!----56
    helloworld!----57
    helloworld!----58
    helloworld!----59
    

    如果使用run方法:

    class Demo extends Thread{
        private String name;
        Demo(String name){
            this.name=name;
        }
        public void run(){//将运行的代码放在run方法中
            for(int x=0;x<60;x++) {
                System.out.println(name+"demo run-----"+x);
            }
        }
    }
    class ThreadDemo{
    
        public static void main(String[] args){
            Demo d1= new Demo("one");//创建好一个线程
            Demo d2= new Demo("two");
            d1.run();
            d2.run();
            for(int x=0;x<60;x++){
                System.out.println("helloworld!----"+x);
            }
        }
    }
    

    执行结果:

    onedemo run-----0
    onedemo run-----1
    onedemo run-----2
    onedemo run-----3
    onedemo run-----4
    onedemo run-----5
    onedemo run-----6
    onedemo run-----7
    onedemo run-----8
    onedemo run-----9
    onedemo run-----10
    onedemo run-----11
    onedemo run-----12
    onedemo run-----13
    onedemo run-----14
    onedemo run-----15
    onedemo run-----16
    onedemo run-----17
    onedemo run-----18
    onedemo run-----19
    onedemo run-----20
    onedemo run-----21
    onedemo run-----22
    onedemo run-----23
    onedemo run-----24
    onedemo run-----25
    onedemo run-----26
    onedemo run-----27
    onedemo run-----28
    onedemo run-----29
    onedemo run-----30
    onedemo run-----31
    onedemo run-----32
    onedemo run-----33
    onedemo run-----34
    onedemo run-----35
    onedemo run-----36
    onedemo run-----37
    onedemo run-----38
    onedemo run-----39
    onedemo run-----40
    onedemo run-----41
    onedemo run-----42
    onedemo run-----43
    onedemo run-----44
    onedemo run-----45
    onedemo run-----46
    onedemo run-----47
    onedemo run-----48
    onedemo run-----49
    onedemo run-----50
    onedemo run-----51
    onedemo run-----52
    onedemo run-----53
    onedemo run-----54
    onedemo run-----55
    onedemo run-----56
    onedemo run-----57
    onedemo run-----58
    onedemo run-----59
    twodemo run-----0
    twodemo run-----1
    twodemo run-----2
    twodemo run-----3
    twodemo run-----4
    twodemo run-----5
    twodemo run-----6
    twodemo run-----7
    twodemo run-----8
    twodemo run-----9
    twodemo run-----10
    twodemo run-----11
    twodemo run-----12
    twodemo run-----13
    twodemo run-----14
    twodemo run-----15
    twodemo run-----16
    twodemo run-----17
    twodemo run-----18
    twodemo run-----19
    twodemo run-----20
    twodemo run-----21
    twodemo run-----22
    twodemo run-----23
    twodemo run-----24
    twodemo run-----25
    twodemo run-----26
    twodemo run-----27
    twodemo run-----28
    twodemo run-----29
    twodemo run-----30
    twodemo run-----31
    twodemo run-----32
    twodemo run-----33
    twodemo run-----34
    twodemo run-----35
    twodemo run-----36
    twodemo run-----37
    twodemo run-----38
    twodemo run-----39
    twodemo run-----40
    twodemo run-----41
    twodemo run-----42
    twodemo run-----43
    twodemo run-----44
    twodemo run-----45
    twodemo run-----46
    twodemo run-----47
    twodemo run-----48
    twodemo run-----49
    twodemo run-----50
    twodemo run-----51
    twodemo run-----52
    twodemo run-----53
    twodemo run-----54
    twodemo run-----55
    twodemo run-----56
    twodemo run-----57
    twodemo run-----58
    twodemo run-----59
    helloworld!----0
    helloworld!----1
    helloworld!----2
    helloworld!----3
    helloworld!----4
    helloworld!----5
    helloworld!----6
    helloworld!----7
    helloworld!----8
    helloworld!----9
    helloworld!----10
    helloworld!----11
    helloworld!----12
    helloworld!----13
    helloworld!----14
    helloworld!----15
    helloworld!----16
    helloworld!----17
    helloworld!----18
    helloworld!----19
    helloworld!----20
    helloworld!----21
    helloworld!----22
    helloworld!----23
    helloworld!----24
    helloworld!----25
    helloworld!----26
    helloworld!----27
    helloworld!----28
    helloworld!----29
    helloworld!----30
    helloworld!----31
    helloworld!----32
    helloworld!----33
    helloworld!----34
    helloworld!----35
    helloworld!----36
    helloworld!----37
    helloworld!----38
    helloworld!----39
    helloworld!----40
    helloworld!----41
    helloworld!----42
    helloworld!----43
    helloworld!----44
    helloworld!----45
    helloworld!----46
    helloworld!----47
    helloworld!----48
    helloworld!----49
    helloworld!----50
    helloworld!----51
    helloworld!----52
    helloworld!----53
    helloworld!----54
    helloworld!----55
    helloworld!----56
    helloworld!----57
    helloworld!----58
    helloworld!----59
    

    总结:run方法无论执行多少次结果都一样,而start是开启多线程的,每次执行的结果根据CPU执行结果,每次都不一样;

  • 相关阅读:
    Linux .o a .so .la .lo的区别
    linux源码Makefile详解
    Kconfig详解
    如何将驱动程序静态编译进内核
    getpeername
    Socket programming in C on Linux | tutorial
    C Socket Programming for Linux with a Server and Client Example Code
    UDP protocol
    TCP protocol
    How to learn linux device driver
  • 原文地址:https://www.cnblogs.com/surewing/p/11421723.html
Copyright © 2011-2022 走看看