您的位置:首页 > 编程语言 > Java开发

java多线程基础1

2015-05-29 21:11 387 查看
java使用Thread类来代表线程,所有的 线程都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段代码 。

在java中有两种实现多线程的方式,继承Thread类和实现Runnable接口,之后还要重写run()方法,但我们启动线程时是调用start()方法,

start方法再调用run()方法。具体的实现方法如下:

继承Thread类:



实现Runnable接口:



另外在SecondThread类中,这里的i是共享的,也就是采用runnable接口方式创建的多个线程可以共享线程类的实例变量。这是因为在这种方式下,

程序所创建的runnable对象只是线程的target,而多个线程可以共享一个target,所以多个线程共享一个线程类的实例变量。

2, 线程的生命周期

当线程被创建并启动以后,它既不是已启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,要经过新建,就绪,运行,阻塞和死亡5种状态。

a,新建和就绪状态

当程序使用new关键字创建了一个线程之后,该线程就出于新建状态,此时它和其他java对象一样,仅仅由java虚拟机为其分配内存,并初始化其成员变量的值。此时的

线程随想没有表现出任何现成的动态特征,程序也不会执行线程的线程执行体。当线程对象调用了start()方法之后,该线程就处于就绪状态,java虚拟机就会为其创建方

法调用栈和程序计数器,处于这个状态中的线程并没有开始运行,只是表示该线程可以运行了。至于该线程何时开始运行,取决于JVM里线程调度器的调度。

注意:就绪状态相当于“等待执行”,但该线程并未真正进入运行状态

b,运行和阻塞状态



c,线程死亡

线程会以如下三种方式结束,结束后就处于死亡状态:

run()方法执行完成,线程正常结束

线程抛出一个为扑火的Exception或error

直接调用该线程的stop()方法来结束线程----该方法容易导致死锁,通常不推荐使用

注意:不要试图对一个已经死亡的线程调用start()方法使它重新启动,死亡就是死亡,该线程不可再次作为线程执行。

可以调用isAlive()方法测试某个线程是否死亡,当线程处于就绪,运行,阻塞状态时,方法返回true,当处于新建,死亡状态时,该方法返回false。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: