线程复习
在讨论线程之前我们先来了解一下操作系统的多任务.什么是所任务呢,多任务一般指在同一时刻似乎拥有多个程序同时运行的能力.多任务是原理是什么呢,在单处理器的情况下,多任务是指操作系统将CPU时间划分成小的片段,并将其分配给不同的程序.从而造成一种并行处理的感觉.
实现多任务有两种方法.这两种方法的区别在于操作系统在中断程序是的行为,---直接中断以及"事先和被中断程序协商,只有在被中断程序同意交出控制权之后才执行中断".前者即所谓的抢占式多任务后者即协作式多任务.在早期的操作系统和一些简易设备上的操作系统中是协作式多任务..抢占式多任务更加有效,但是代价是实现起来比较困难.
那么多线程和多任务有什么关系呢?其实没什么关系,只是多线程在更低的层次中引入了多任务的概念.:单个的进程可以同时处理多个任务,通常将每个任务成为一个线程.可以一次运行多个线程的程序被称为是多线程的.
那么多线程和多进程有什么区别呢?本质的区别在于每个进程都拥有自己的变量的完备集.线程则共享相同的数据.多线程的优势就在于:由于共享变量的存在线程之间的通信更加有效简单.而且对于某些操作系统而言,线程比进程更"轻量级"创建和销毁一个单个线程比发起进程的开销要小得多了哦.
好了介绍就先写到这吧.一下真正开始介绍线程的相关知识.
首先介绍几个方法:
1,java.lang.Thread 1.0
Static void sleep(Long millis) 休眠制定的毫秒数.
2,Thread(Runnable target)
构造一个新的线程,调用指定的target的run方法.
3,void start();
启动这个线程,将引发调用run()方法.这个方法立即返回,并且新线程将并发运行.
4,void run()
调用关联runnable的run方法.你要做的工作是重载这个方法,并且在这个方法中为你想要执行的任务提供相关的处理代码.
下面将讨论中断线程的方法,以及他们的利弊
线程在他的run方法返回时终止,在JDK1.0的时候存在一个stop方法.其他线程可以调用他来终止当前线程.但是这个方法已经被废弃了.也就是说现在已经没有了强制终止线程的方法.但是你可以用interrupt方法来请求终止一个线程.
当interrupt方法在一个线程上被调用的时候,该线程的 中断状态 会被置位,中断状态是一个布尔类型的标志.存在于每一个线程中.每一个线程都应该不时地检查这个标志.以判断线程是否被中断.位了查明中断状态是否被置位置了,需要首先调用静态的Thread.currentThread方法来取得当前线程,然后调用他的isInterrupted方法.尽管如此,如果一个线程被阻塞了.它就无法检查中断状态了,这就是产生InterruptException异常的地方.当在一个阻塞的线程上调用interrupt方法时,阻塞调用就会被interruptException异常终止.当前,没有任何语言要求一个被中断的程序终止,中断程序只能引起该线程的注意,被中断程序可以决定如何对应中断,某些线程非常重要,以至于他们应该不理会中断,而是在处理完跑出的异常之后继续执行.但是更普遍的情况是,一个线程将把中断看作是一个终止请求,这种线程的run方法.遵循如下的形式.
线程的状态
New 当你用new创建符创建一个线程时;线程还没有运行,此时线程处在新生状态,当一个线程处于新生状态时,线程中没有运行线程的代码,在线程可以运行之前,还有一些笔记工作要做.
Runnable:调用了start()方法.该线程成为了可运行状态了.一个线程在可运行状态时线程可能在运行,也可能没有.这取决于操作系统位该线程提供的运行时间,
Blocked:当线程遇到以下情况是,可能进入多阻塞状态.(lue)
Dead:run方法正常退出并且自然死亡.或者是一个未捕获的异常终止了run方法而时线程猝死.
哎,今天就写到这里吧,明天总结线程的属性.