传统线程技术(一)

传统线程技术(一)

大家好,又见面了,我是全栈君。

一. 传统线程创建方法

1. 覆盖Thread子类的run方法中编写详细代码

2. 在传递给Thread的Runnable对象的run方法中编写详细代码

二. 实现代码

public class TraditionalThread {	public static void main(String[] args) {		// 方法1:直接new一个Thread的子类。让子类run方法覆盖父类的run方法		Thread thread1 = new Thread() {			@Override			public void run() {				while (true) {					try {						Thread.sleep(500);						System.out.println(Thread.currentThread().getName());					} catch (InterruptedException e) {						e.printStackTrace();					}				}			}		};		thread1.start();  		// 方法2:给Thread类传一个实现了Runnable接口的类		Thread thread2 = new Thread(new Runnable() {			@Override			public void run() {				while (true) {					try {						Thread.sleep(500);						System.out.println(Thread.currentThread().getName());					} catch (InterruptedException e) {						e.printStackTrace();					}				}			}		});		thread2.start();	}}

小知识:

1. new Thread(){ 

    }   这样的写法事实上是创建了Thread的子类

2. new Thread(new Runnable(){}){

    }   传递给Thread的參数事实上是Runnable的实现类对象

三. 一个典型样例:

请问以下的类是运行Runnable中的run方法还是Thread子类的方法?

public class Test {
	public static void main(String[] args) {
		// 以下的代码将会执行Thread子类的run方法而不会执行runnable中的run方法
		new Thread(new Runnable() {
			@Override
			public void run() {
				while (true) {
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					System.out.println("Runnable:" + Thread.currentThread().getName());
				}
			}
		}) {
			@Override
			public void run() {
				while (true) {
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					System.out.println("Thread:" + Thread.currentThread().getName());
				}
			}
		}.start();
	}
	
	/**
	 * Thread 类中的run方法
	 * private Runnable target;
	 * 
	 * public void run() {
	 *	  if (target != null) {
	 *		  target.run();
	 *	  }
	 * }
	 **/
}

答案是执行Thread子类的run方法。 由于它覆盖了父类的run方法,根本就不会执行到runnable的方法,即target.run()


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116108.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • clion永久激活码 Ubuntu_通用破解码

    clion永久激活码 Ubuntu_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    297
  • macbookpro安装homebrew_虚拟机安装mac流畅吗

    macbookpro安装homebrew_虚拟机安装mac流畅吗Homebrew简称brew,Homebrew是一款MacOS平台下的软件包管理工具,很方便帮助我们实现安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,Homebrew官网中清楚介绍了安装和基本使用安装与卸载安装1.打开mac终端将以下命令粘贴至终端。/usr/bin/ruby-e”$(curl-fsSLhttps://…

    2022年10月24日
    0
  • 网购冷门产品有哪些_淘宝比较冷门的商品

    网购冷门产品有哪些_淘宝比较冷门的商品sharonshen ,熠仔6149人赞同1. 小白鞋纳米喷雾!!!这个真是绝了,本人就是穿小白鞋一周就会穿成小脏鞋的那种,有了这个在新鞋的时候全方位喷一下,真的就再也不会脏了耶!其实呢,当年买它,是宝宝在法国的时候,去北欧玩,穿的雪地靴,踩在雪里,雪都能化进鞋里(顺便吐槽下,雪地靴真的不适合在雪地里面行走!!!),所以买了下面的这个喷雾,防水,后来惊讶的发现,

    2022年10月4日
    0
  • Python画图爱心_python语言画爱心

    Python画图爱心_python语言画爱心都说程序员不浪漫,上次看到一个程序员小哥给自己老婆开发了一个专属的APP。其实程序员还有更多美好的事情可以做,比如,给你喜欢的妹纸,用代码的方式去表白(当然可能还有一些前戏啥的,自己结合实际场景再渲染下),直接上代码:print’\n’.join([”.join([(‘loveyou'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y…

    2022年9月6日
    2
  • idea 安装教程_复合门安装视频完整版

    idea 安装教程_复合门安装视频完整版IDEA的安装教程

    2022年10月2日
    1
  • C1能力认证训练题解析 _ 第四部分 _ Web进阶「建议收藏」

    C1能力认证训练题解析 _ 第四部分 _ Web进阶「建议收藏」C1见习工程师能力认证训练题_第四部分_Web进阶

    2022年10月20日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号