Java - 线程基础

来源:互联网 发布:微信支付html源码 编辑:程序博客网 时间:2024/05/18 01:13

一、创建线程

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

    1、创建Thread的子类

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

public class MyThread extends Thread {@Overridepublic 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 {@Overridepublic void run() {System.out.println("implements runnable!");}}
        要使线程执行run()方法,需要在Thread类的构造函数中传入MyRunnable的实例对象。示例如下:
new Thread(new MyRunnable()).start();
        补充:也可以一个实现了Runnable接口的匿名类并执行它:

new Thread(new Runnable() {@Overridepublic 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();
 
 

 

0 0
原创粉丝点击