学习java多线程的笔记1--Thread(Runnable t)与重写run()方法等

原创 2012年03月26日 20:47:07

今天看了看《Java2核心技术卷II:高级特性》中的--多线程--这一篇,还有看了张孝祥老师的Java多线程与并发库高级应用视频。顺便做个笔记,方便以后复习一下java相关知识:

关于线程Thread类中的  Thread(Runnable target) 构造方法的使用

代码一:

package cn.yang.thread;

public class ThradTest2 {

	/**
	 * Thread(Runnable target) 
     *	分配新的 Thread 对象。
	 * @param args
	 */
	public static void main(String[] args) {
		//new Thread(new Runnable(){run()/*...*/}){run()/*...*/}.start();

		new Thread(
				new Runnable() {
					public void run() {
						System.out.println("this is Runnable run");
					}
				}
				){
			public void run() {
				System.out.println("this is Thread run");
			}
		}.start();
		
		
	}

}

上面的代码创建了一个Thread匿名类,使用的构造方法是Thread(Runnable target)

像使用Thread()构造方法一样写以下的代码:

代码二:

new Thread(){
		public void run() {
		//do something
			};
		}.start();

上面的写法是新建一个Thread匿名类,再实现它里面的run()方法。So...这个很容易理解为什么是这样一回事!

但我要使用Thread(Runnable target)构造方法时,先写一个Runnable匿名类实例对象,重写里面的run()方法。

就如代码一中的那样:

代码三:

new Thread(
				new Runnable() {
					public void run() {
						System.out.println("this is Runnable run");
					}
				}
				){
			public void run() {
				System.out.println("this is Thread run");
			}
		}.start();
既重写了Thread匿名类的run()方法,又重写了Runnable匿名类的run()方法。问题:最终调用哪一个类中的run()方法?

运行结果——>this is Thread run

很明显,执行了Thread匿名类的run()方法,而没有执行Runnable匿名类的run()方法。

因为上面的代码重写了Thread匿名类的run()方法.体现了面向对象编程思想

当没有重写Thread匿名类的run()方法,而仅仅重写了Runnable匿名类的run()方法,则会执行Runnable匿名类的run()方法。像这样...

代码四:

new Thread(
				new Runnable() {
					public void run() {
						System.out.println("this is Runnable run");
					}
				}
				){
		}.start();
	}

运行结果——>this is Runnable run


就是这样子了

摘自张老师的PPT上的知识点:

涉及到的一个以往知识点:匿名内部类对象的构造方法如何调用父类的非默认构造方法


以上的笔记在2012.3.26晚由菜鸟小弟我记下的。:->


线程 创建和启动线程的两种方式 实现Runnable接口 继承Thread类 重写唯一方法run()

线程 创建和启动线程的两种方式 实现Runnable接口 继承Thread类 重写唯一方法run() 1.实现Runnable接口,必须重写Runnable接口的唯一run()方法。 ...
  • wangyang55555
  • wangyang55555
  • 2014年11月27日 21:58
  • 2627

多线程实现方式1:自定义一个类,继承Thread类,并重写run方法。

/** * 多线程实现方式1: * 自定义一个类,继承Thread类,并重写run方法。 * @author jiaxutianhuo * */ public class XianCheng...
  • qq_36872096
  • qq_36872096
  • 2017年08月18日 15:56
  • 322

介绍线程、线程类及Runnable。(转)

摘要 用户期望程序能展现优异的性能。为了满足这个期望,你的程序常常使用到线程。在这篇文章中我们开始练习使用线程。你将学习到线程、线程类及Runnable。 用户不喜欢反应迟钝的软件。当用户单击一个鼠标...
  • nighthawk
  • nighthawk
  • 2004年07月30日 09:53
  • 1387

java两种启动线程方法根本不同,Thread继承和实现Runable接口

java实现多线程有两种方法 1、继承Thread类,实现run方法 2、
  • xiaoshubiao
  • xiaoshubiao
  • 2014年05月23日 13:53
  • 1382

启动线程的五种方式方法(通过继承Thread类或实现Runnable接口)

package day01; /**  * 启动线程的五种方式方法:  * 本质:继承Thread类或实现runnable接口  * @author Administrator  *  *...
  • beyond0851
  • beyond0851
  • 2013年01月02日 13:27
  • 6451

创建Thread对象时,当Runnable的run撞上Thread的run时谁会让步?

当一个Java的Thread对象既传入了一个Runnable对象作为参数,同时又重写了Thread的run方法,究竟哪个run方法会得到执行。针对这个问题,本文通过分析源码,剖析原理,做出了完美的解答...
  • YSSJZ960427031
  • YSSJZ960427031
  • 2016年08月24日 18:56
  • 748

start()和run()方法的区别

Java 线程一直是一个比较容易困扰的地方,首先,我们来认识下怎样生存线程。 认识 Thread 和 Runnable java中实现多线程有两种途径:继承Thread类或者实现Runnabl...
  • dada360778512
  • dada360778512
  • 2011年11月13日 14:00
  • 14578

JAVA多线程—传统线程机制-运行Thread.run()还是Runnable.run()

问题:如果在Thread子类覆盖的run方法中编写了运行代码,也为Thread子类对象传递了一个Runnable对象,那么,线程运行时的执行代码是子类的run方法的代码?还是Runnable对象的ru...
  • u012758088
  • u012758088
  • 2017年04月20日 22:47
  • 384

Thread的run()与start()的区别

java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方...
  • xuxurui007
  • xuxurui007
  • 2012年06月22日 20:01
  • 71398

Thread中start()和run()的区别

Thread类包含start()和run()方法,有些人以为这两个方法作用一致,那就就大错特错了 start() 方法的作用是启动一个新线程,新线程会执行相应的run()方法,start()不能被重复...
  • u010568463
  • u010568463
  • 2015年08月23日 21:44
  • 1935
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习java多线程的笔记1--Thread(Runnable t)与重写run()方法等
举报原因:
原因补充:

(最多只允许输入30个字)