博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java多线程与线程并发一:线程基础回顾
阅读量:5297 次
发布时间:2019-06-14

本文共 1610 字,大约阅读时间需要 5 分钟。

本文章内容整理自:张孝祥_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方法相当于作废,自然也就出现了上文提到的结果。

转载于:https://www.cnblogs.com/bailiyi/p/3619251.html

你可能感兴趣的文章
JD路径配置及myeclipse主题和提示设置
查看>>
codeforces Round #440 A Search for Pretty Integers【hash/排序】
查看>>
python的字典(dict)的键值对存储规则
查看>>
java cooki的使用
查看>>
more 分页显示文件内容
查看>>
ubuntu18 tensorflow cpu fast_rcnn
查看>>
PageHelper在Mybatis中的使用
查看>>
POJ 1742 Coins
查看>>
Spring Boot -- Start Up
查看>>
JS常用各种正则表达式(汇总)
查看>>
UVa1225 数数字
查看>>
Pattern Evaluation
查看>>
kindle--瓦尔登湖
查看>>
C++new/delete相关知识点详解
查看>>
spark使用Hive表操作
查看>>
[java]Clipboard:实现复制粘贴
查看>>
with as 如何工作
查看>>
unix设计十七条原则之一(unix编程艺术笔记)
查看>>
获取本月最后一天23点59分59秒
查看>>
Cookie实现:您曾经浏览过的商品记录
查看>>