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

  • 相关阅读:
    [经验] 如何在虚拟机上安装 CentOS
    [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信[2]
    [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信 [1]
    [经验] 关于 Java 中的非空判断
    [经验] Java Web 项目怎么部署到 Linux 系统上
    求和
    引用与指针
    C++学习前言
    大O
    ubuntu连接不上mysql问题
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/4752153.html
Copyright © 2011-2022 走看看