Java - 线程基础

一、创建线程

        编写线程运行时执行的代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。

    1、创建Thread的子类

        创建Thread子类的一个实例并重写run方法,run方法会在调用start()方法之后被执行。例子如下:

public class MyThread extends Thread {
	
	@Override
	public void run() {
		System.out.println("extends thread!");
	}
	
}
        可以用如下方式创建并运行上述Thread子类:

new MyThread().start();
        补充:也可以如下创建一个Thread的匿名子类并执行它:

new Thread(){
	public void run(){
		System.out.println("anonymous extends thread!");
	}
}.start();
    2、实现Runnable接口

        新建一个实现了java.lang.Runnable接口的类的实例,实例中的方法可以被线程调用。例子如下:

public class MyRunnable implements Runnable {

	@Override
	public void run() {
		System.out.println("implements runnable!");

	}

}
        要使线程执行run()方法,需要在Thread类的构造函数中传入MyRunnable的实例对象。示例如下:
new Thread(new MyRunnable()).start();
        补充:也可以一个实现了Runnable接口的匿名类并执行它:

new Thread(
	new Runnable() {
		@Override
		public void run() {
			System.out.println("anonymous implement runnable!");
		}
	}
).start();

二、一些问题
    1、关于线程的执行

        一旦线程启动后start方法就会立即返回,而不会等待到run方法执行完毕才返回。

    2、调用run()方法和start()方法的区别:

        当创建一个线程并调用线程的run()方法时,如下所示:

new MyThread().run();    //new MyThread().start();

        用上面的方式调用的run()方法并非是由刚创建的新线程所执行的,而是被创建新线程的当前线程所执行的。想要让创建的新的线程执行run()方法,必须调用新线程的start方法即被注释的方式。

    3、线程的名称

        当创建一个线程的时候,可以给线程起一个名字。示例如下:

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable, "My First Thread");
thread.start();
System.out.println(thread.getName());
        在Runnable的实现类中,如果要获取线程名可以通过如下方式取得当前线程的引用:

Thread.currentThread();
 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值