• java多线程与线程并发一:线程基础回顾


    本文章内容整理自:张孝祥_Java多线程与并发库高级应用视频教程

    线程简单来讲就是程序正在做的事情。多线程即一个程序同时做多件事情,一个线程就是一件事情。

    在java中创建线程的方法有两种。

    方法一是直接重写Thread对象的run方法。代码如下:

    //重写Thread类的run方法
            Thread thread = new Thread(){
                @Override
                public void run() {
                    while (true) {
                        try {
                            Thread.sleep(1000);//线程休眠1秒
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("Thread"+Thread.currentThread().getName());//打印当前线程的名字
                    }
                }
            };
            thread.start();

    方法二是创建Runnable对象,重写其的run方法,然后传入Thread对象。

    //重写Runnable类的run方法,传入Thread对象
            Thread thread2 = new Thread(new Runnable() {
                
                @Override
                public void run() {
                    while (true) {
                        try {
                            Thread.sleep(1000);//线程休眠1秒
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("Runnable:"+Thread.currentThread().getName());//打印当前线程的名字
                    }
                }
            });
            thread2.start();

    这两种方法在效果上没有区别,不过当一个Thread对象既重写了run方法,又传入了Runnable对象时,结果会执行哪个run方法里的代码呢?

    答案是,会执行Thread对象重写过的run方法里的代码。

    为什么会这样呢?

    翻看java源代码可以找到答案。

    在Thread类中,run方法是这样实现的:

    @Override
        public void run() {
            if (target != null) {
                target.run();
            }
        }

    其中的target是一个Runnable对象。

    也就是说,只有当Thread对象去实现父类的run方法时,才会使用Runnable对象。假如Thread对象自己实现了run方法,那么父类的run方法相当于作废,自然也就出现了上文提到的结果。

  • 相关阅读:
    词云(WordCloud)
    Pandas常用方法
    PCA降维的原理及实现
    支持向量机(SVM)公式整理
    《小狗钱钱》
    初识 Netty
    hello world
    算法-归并排序
    算法-堆与堆排序
    Java并发编程05-线程池
  • 原文地址:https://www.cnblogs.com/bailiyi/p/3619251.html
Copyright © 2020-2023  润新知