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方法。

  • 相关阅读:
    20190318-使用类做一个简单的图书馆管理系统
    20190313-面向对象的简单理解
    20190313-时间和日期-Time
    20190305-leetcode题目有效的括号
    20190227-做一个简易代码统计工具
    20190226-利用序列化完成小型记账程序
    20190221-文件操作
    20190131-文件操作命题练习
    Excel技巧—如何从重复行中取某一行
    Excel技巧—轻松搞定多级联动下拉列表
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/4752153.html
Copyright © 2011-2022 走看看