关闭

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

标签: 多线程javathreadstringclass编程
6619人阅读 评论(0) 收藏 举报
分类:

今天看了看《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晚由菜鸟小弟我记下的。:->


2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:110474次
    • 积分:1217
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:6篇
    • 译文:1篇
    • 评论:3条
    最新评论