JAVA线程----基础

线程简介:

  现在个人计算机操作系统多采用多任务和分时设计。一般可以在 同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都哟自己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java程序通过流控制来执行程序流,程序中单个顺序流控制称为线程;多线程则是指单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句几乎可以在同一时间内运行的。

  线程与进程相似,是一段完成某个特定功能的代码,是程序中当个顺序的流控制。但与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源的,线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小得多,正因为如此,线程被称为轻负荷进程。一个进程中可以包含多个线程。

  一个线程是一个程序内部的顺序控制流。

(1)、进程:每个进程都有自己的代码和数据空间(进程上下文),进程切换的开销大。

(2)、线程:轻量级进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器,线程切换开销小。

(3)、多进程:在操作系统中,能同时运行多个任务程序;

(4)、多线程:在同一应用程序中,有多个顺序流同时执行;

 

线程的状态:

  Java使用Thread类及其子类的对象表示线程,线程在它的一个完整的生命周期中通常要经历如下的四种状态:

1.创建状态

  当一个Thread类或其子类的对象被声明并创建时,例如执行下列语句时,线程就处于创建状态:

  Thread myThread=new MyThreadClass();

当一个线程处于创建状态的时候,它仅仅分配内存资源,并不能执行。

2.可运行状态

  线程对象只有调用start()方法才能进入可运行状态;

  myThread.start();

  当处于可运行状态时,系统就为这个线程分配了它需要的系统资源,安排其运行并调用线程运行方法。

3.不可运行状态

  不可运行状态也称阻塞状态,或者因为某种原因(输入/输出,等待消息,或者其他阻塞情况),系统不能执行线程状态。线程进入该状态的原因有如下几条。

  (1)、调用了sleep方法  (2)、调用了suspend方法  

  (3)、为等候一个条件变量,线程调用wait方法

  (4)、输入/输出流中发生了阻塞状态

4.死亡状态

  就是线程释放了实体。处于死亡状态的线程不具有继续运行的能力。一般可以通过两种方法实现:

  (1)、自然撤销,正常运行的线程完成它的全部工作,也就是线程执行完毕

  (2)、线程被停止,调用stop方法。一般不推荐通过这种方法来终止线程的执行。

 

我们以前写的程序都是从上往下按照一定顺序执行的,而引入线程之后,这个苛刻的规则被打破,程序会开辟多个分支运行,再加上处理器的高速处理数据的能力,我们肉眼看起来就像是同时运行一样。

class Lefthand extends Thread{
        public void run(){
            for(int i=1;i<=4;i++){
                System.out.println("我是左手线程");
            }
        }
    }    


class Righthand extends Thread{
        public void run(){
            for(int i=1;i<=4;i++){
                System.out.println("我是右手线程");
            }
        }
    }    

public class ThreadTest{
    public static void main(String args[]){
        Lefthand left=new Lefthand();
        Righthand right=new Righthand();
        
        left.start();
        right.start();

        for(int i=1;i<=4;i++){
                System.out.println("我是主线程");
        }
    }
}

 

posted @ 2016-08-12 10:55  生成风  阅读(481)  评论(0编辑  收藏  举报