java多线程编程入门


package com.CUPK.lsz;

public class TraditionalThread {

	public static void main(String[] args) {
		/*
		 * 方法一:
		 */
		// 定义一个子类对象
		Thread thread0 = new Thread() {
			public void run() {
				while (true) {
					try {
						Thread.sleep(5000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println("0当前线程为:" + Thread.currentThread().getName());
					System.out.println("1当前线程为:" + this.getName());
				}
			}
		};
		// thread0.start();

		/* 方法二 */
		Thread thread1 = new Thread(new Runnable() {

			@Override
			public void run() {
				while (true) {
					// TODO Auto-generated method stub
					System.out.println("当前线程为:" + Thread.currentThread().getName());
				}
			}

		});
		// thread1.start();

		/* 深入理解run()方法 */
		//首先start()方法去找当前对象Thread,并执行当前对象的run()方法,如果没找到子类的run()方法,才会去找父类的run()方法,在Runnable对象不为null时,父类run()方法会去找Runnable的run()方法,而当前子类有run()方法,所以会执行子类的run()方法
		//建立Thread类的子对象,并重run()方法,这个时候子类的run()方法已经重写了父类的run()方法
		new Thread(new Runnable() {

			@Override
			public void run() {
				System.out.println("Runnable run" + Thread.currentThread().getName());

			}

		}) {

			@Override
			public void run() {
				while (true) {
					System.out.println("Thread run" + Thread.currentThread().getName());
				}
			}
		}.start();
	}

}
//如果我们将Thread类的子对象中的run()方法去掉,则会调用父类run()方法,有因为Runnable对象不为null,所以进而调用Runnable的run()方法

这里我们重点说一下方法二 :

首先我们看一下Thread类的源代码:

 

由上面图片可以看出1、在Thread类中定义了Runnable类的target对象

2、在Thread的构造方法public Thread(Runnable target)中调用了init()方法

3.private void init(ThreadGroup g, Runnable target, String name,
                      long stackSize, AccessControlContext acc) 方法中

this.target=target语句将类中的target对象赋值

4.类中的run(){}方法有如下语句:if(targit!=null){target.run();}说明如果类中的target对象不为null,则调用target对象的run()方法,

所以我们将Runnable类创建的target子对象传给Thread()类,并在其中实现target子对象的run()方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值