线程复习

11年前

在讨论线程之前我们先来了解一下操作系统的多任务.什么是所任务呢,多任务一般指在同一时刻似乎拥有多个程序同时运行的能力.多任务是原理是什么呢,在单处理器的情况下,多任务是指操作系统将CPU时间划分成小的片段,并将其分配给不同的程序.从而造成一种并行处理的感觉.

实现多任务有两种方法.这两种方法的区别在于操作系统在中断程序是的行为,---直接中断以及"事先和被中断程序协商,只有在被中断程序同意交出控制权之后才执行中断".前者即所谓的抢占式多任务后者即协作式多任务.在早期的操作系统和一些简易设备上的操作系统中是协作式多任务..抢占式多任务更加有效,但是代价是实现起来比较困难.

那么多线程和多任务有什么关系呢?其实没什么关系,只是多线程在更低的层次中引入了多任务的概念.:单个的进程可以同时处理多个任务,通常将每个任务成为一个线程.可以一次运行多个线程的程序被称为是多线程的.

那么多线程和多进程有什么区别呢?本质的区别在于每个进程都拥有自己的变量的完备集.线程则共享相同的数据.多线程的优势就在于:由于共享变量的存在线程之间的通信更加有效简单.而且对于某些操作系统而言,线程比进程更"轻量级"创建和销毁一个单个线程比发起进程的开销要小得多了哦.

好了介绍就先写到这吧.一下真正开始介绍线程的相关知识.

首先介绍几个方法:

1,java.lang.Thread 1.0

Static  void  sleep(Long millis)   休眠制定的毫秒数.

2,Thread(Runnable target)

构造一个新的线程,调用指定的targetrun方法.

3,void start();

启动这个线程,将引发调用run()方法.这个方法立即返回,并且新线程将并发运行.

4,void run()

调用关联runnablerun方法.你要做的工作是重载这个方法,并且在这个方法中为你想要执行的任务提供相关的处理代码.

下面将讨论中断线程的方法,以及他们的利弊

线程在他的run方法返回时终止,JDK1.0的时候存在一个stop方法.其他线程可以调用他来终止当前线程.但是这个方法已经被废弃了.也就是说现在已经没有了强制终止线程的方法.但是你可以用interrupt方法来请求终止一个线程.

interrupt方法在一个线程上被调用的时候,该线程的  中断状态  会被置位,中断状态是一个布尔类型的标志.存在于每一个线程中.每一个线程都应该不时地检查这个标志.以判断线程是否被中断.位了查明中断状态是否被置位置了,需要首先调用静态的Thread.currentThread方法来取得当前线程,然后调用他的isInterrupted方法.尽管如此,如果一个线程被阻塞了.它就无法检查中断状态了,这就是产生InterruptException异常的地方.当在一个阻塞的线程上调用interrupt方法时,阻塞调用就会被interruptException异常终止.当前,没有任何语言要求一个被中断的程序终止,中断程序只能引起该线程的注意,被中断程序可以决定如何对应中断,某些线程非常重要,以至于他们应该不理会中断,而是在处理完跑出的异常之后继续执行.但是更普遍的情况是,一个线程将把中断看作是一个终止请求,这种线程的run方法.遵循如下的形式.

线程的状态

New   当你用new创建符创建一个线程时;线程还没有运行,此时线程处在新生状态,当一个线程处于新生状态时,线程中没有运行线程的代码,在线程可以运行之前,还有一些笔记工作要做.

Runnable:调用了start()方法.该线程成为了可运行状态了.一个线程在可运行状态时线程可能在运行,也可能没有.这取决于操作系统位该线程提供的运行时间,

Blocked:当线程遇到以下情况是,可能进入多阻塞状态.(lue)

Dead:run方法正常退出并且自然死亡.或者是一个未捕获的异常终止了run方法而时线程猝死.

,今天就写到这里吧,明天总结线程的属性.