多线程概念和Java创建新线程的三种方法

一、线程和进程

进程:处于运行过程中的程序,具有一定的独立功能,是系统进行资源分配和调度的一个独立单位。

        特点:独立性、动态性、并发性。

线程:进程的执行单元,线程可以拥有自己的堆栈、程序计数器和局部变量,但不拥有系统资源,它与父进程的其他线程共享该线程拥有的全部资源。

一个线程可以创建和销毁另一线程,同一进程的多个线程可以并发执行。线程的调度与管理由进程本身负责完成。

多线程的优点:①进程之间不能共享内存,线程可以

                          ②系统创建进程时需要为进程重新分配系统资源,但创建线程的代价小得多,使用多线程效率高

                          ③java语言内置了许多多线程功能支持

二、线程的创建和启动

1、继承Thread类创建线程类

步骤:

    1)创建Thread类的子类,并重写run()方法(作为线程执行体)

    2)创建子类实例,即创建了线程对象

    3)调用线程对象start()方法启动线程

方法:  ①Thread.currentThread():返回当前正在执行的线程对象

            ②getName():返回调用该方法的进程名字

            ③setName(String name):为线程设置名字

            未设置名字时,默认名字为:主线程main,其他线程:Thread-0,Thread-1 ......

使用继承Tread类的方法创建线程时,多个线程之间无法共享线程类的实例变量。

2、实现Runnable借口创建线程类

步骤:

    1)定义Runnable接口实现类,并重写run()方法(作为线程执行体)

    2)创建实现类实例,并以此实例作为target创建Thread对象,即线程对象。

            new Thread ( new 实现类 () , "线程名" ); 线程名可省略

    3)调用线程对象的start()方法启动线程

    采用Runnable接口创建的多个线程可以共享线程类的实例变量。

3、使用Callable和Future创建线程

步骤:

    1)创建Callable接口实现类,并实现call()方法(作为线程执行体,call方法有返回值并且可以声明抛出异常)

    2)创建实现类的实例,并用FutureTask类包装该对象(FutureTask对象封装了Callable对象的call方法的返回值)

    3)使用FutureTask对象作为Thread对象的target创建并启动线程

    4)调用FutureTask对象的get()方法获得子线程执行结束后的返回值

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页