zoukankan      html  css  js  c++  java
  • 1、传统线程创建回顾

    1、直接使用Thread新建线程

    package com.yzl;
    
    public class ThreadPart_1 {
        
        //直接使用Thread对象新建线程并重run方法
        public void test1(){
            Thread thread1 = new Thread(){
                @Override
                public void run() {
                    super.run();
                    for(int i=1; i<=10; i++){
                        System.out.println("Thread:" + Thread.currentThread().getName() + ",value is:" + i);
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            };
            thread1.start();
        }
        
        public static void main(String[] args) {
            System.out.println("Main Thread:" + Thread.currentThread().getName() + " is run ");
            ThreadPart_1 test = new ThreadPart_1();
            test.test1();
        }
    }

    运行结果:

    Main Thread:main is run 
    Thread:Thread-0,value is:1
    Thread:Thread-0,value is:2
    Thread:Thread-0,value is:3
    Thread:Thread-0,value is:4
    Thread:Thread-0,value is:5
    Thread:Thread-0,value is:6
    Thread:Thread-0,value is:7
    Thread:Thread-0,value is:8
    Thread:Thread-0,value is:9
    Thread:Thread-0,value is:10

    2、使用Runnable接口新建线程(从面向对象的角度这方法更好

    //使用Runnable接口新建线程
        public void test2(){
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    for(int i=1; i<=10; i++){
                        System.out.println("Thread:" + Thread.currentThread().getName() + ",value is:" + i);
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
            thread.start();
        }
        
        public static void main(String[] args) {
            System.out.println("Main Thread:" + Thread.currentThread().getName() + " is run ");
            ThreadPart_1 test = new ThreadPart_1();
            test.test2();
        }

    运行结果:

    Main Thread:main is run 
    Thread:Thread-0,value is:1
    Thread:Thread-0,value is:2
    Thread:Thread-0,value is:3
    Thread:Thread-0,value is:4
    Thread:Thread-0,value is:5
    Thread:Thread-0,value is:6
    Thread:Thread-0,value is:7
    Thread:Thread-0,value is:8
    Thread:Thread-0,value is:9
    Thread:Thread-0,value is:10

    3、有趣一个测试

    //有趣的测试
        public void test3(){
            Thread thread = new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("Runnable run method is runing~~~");
                    }
                }
            ){
                @Override
                public void run() {
                    System.out.println("Thread run method is runing~~~");
                }
            };
            thread.start();
        }
        
        public static void main(String[] args) {
            System.out.println("Main Thread:" + Thread.currentThread().getName() + " is run ");
            ThreadPart_1 test = new ThreadPart_1();
            test.test3();
        }

    运行结果:

    Main Thread:main is run 
    Thread run method is runing~~~

    原因:

    但是上面这run方法运行的前提是没有人去重写该方法,而我们上面的代码却重写了,导致上面这图片中的代码无法运行,故运行的是thread的run方法。

  • 相关阅读:
    分布式配置 SSH 免密登陆
    转载--宏观认识大数据圈
    转载--存储是怎样炼成的
    转载--关于hdfs
    绕不开的hadoop
    sqoop 使用
    Excel VBA解读(54):排序——Sort方法
    MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”。操作系统错误 5:“5(拒绝访问。)”。 (Microsoft SQL Server,错误: 5120)
    Delphi Code Editor 之 编辑器选项
    解决StrToDateTime()不是有效日期类型的问题
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/4752153.html
Copyright © 2011-2022 走看看