到这里我们做个完整例子来介绍说明线程产生方式区别而生成线程区别:
package debug;
import java.io.*;
import java.lang.Thread;
MyThread extends Thread{
public x = 0;
public void run{
.out.prln(x);
}
}
R implements Runnable{
private x = 0;
public void run{
.out.prln(x);
}
}
public Test {
public void (String args) throws Exception{
for( i=0;i<10;i){
Thread t = MyThread;
t.start;
}
Thread.sleep(10000);//让上面线程运行完成
R r = R;
for( i=0;i<10;i){
Thread t = Thread(r);
t.start;
}
}
} 上面10个线程对象产生10个线程运行时打印了10次1下面10个线程对象产生10个线程运行时打印了1到10我们把下面10个线程称为同例子(Runnable例子)多个线程
下节我们将研究线程对象思路方法还是那句话般文档中可以读到内容我不会介绍太多
请大家自己了解
线程对象几个重要思路方法
尽管线程对象常用思路方法可以通过API文档来了解,但是有很多思路方法仅仅从API介绍说明是无法详细了解
本来打算用节篇幅来把线程思路方法中些重要知识说完,但这样下来估计要很常篇幅,可能要用好几节才能说把和线程思路方法相关些重要知识说完
首先我们接基础篇( 2)来介绍说明start思路方法
个线程对象生成后,如果要产生个执行线程,就定要它start思路方法.在介绍这个思路方法时不得区别时介绍说明run思路方法.其实线程对象run思路方法完全是个接口回调思路方法,它是你这个线程对象要完成具体逻辑.简单说你要做什么就你在run中完成,而如何做,什么时候做就不需要你控制了,你只要start思路方法,JVM就会管理这个线程对象让它产生个线程并注册到线程处理系统中
从表面上看,start思路方法了run思路方法,事实上,start思路方法并没有直接run思路方法.在JDK1.5以前 start思路方法是本地思路方法,它如何最终run思路方法已经不是JAVA员所能了解.而在JDK1.5中,原来那个本地start思路方法被 start0代替,另个个纯JAVAstart中本地思路方法start0,而在start思路方法中做了个验证,就是对个全局变量 (对象变量)started做检验,如果为true,则start抛出异常,不会本地思路方法start0,否则,先将该变量设有true,然后start0
从中我们可以看到这个为了控制个线程对象只能运行成功次start思路方法.这是线程运行要获取当前环境,包括安全,父线程权限, 优先级等条件,如果个线程对象可以运行多次,那么定义个 线程在个环境中获取相应权限和优先级,运行完成后它在另个环境中利用原来权限和优先级等属性在当前环境中运行,这样就造成无法预知结果.简单说来,让个线程对象只能成功运行次,是基于对线程管理需要
start思路方法最本质功能是从CPU中申请另个线程空间来执行 run思路方法中代码,它和当前线程是两条线,在相对独立线程空间运行,也就是说,如果你直接线程对象run思路方法,当然也会执行,但那是在当前线程中执行,run思路方法执行完成后继续执行下面代码.而start思路方法后,run思路方法代码会和当前线程并发(单CPU)或并行 (多CPU)执行
所以请记住句话[线程对象run思路方法不会产生个新线程],虽然可以达到相同执行结果,但执行过程和执行效率区别
[线程errupt思路方法,errupted和isInterrupted]
这 3个思路方法是关系非常密切而且又比较复杂,虽然它们各自功能很清楚,但它们的间关系有大多数人不是真正了解
先说errupt思路方法,它是例子思路方法,而它也是最奇怪思路方法,在java语言中,线程最初被设计为"隐晦难懂"东西,直到现在它语义不没有象它名字那样准确大多数人以为,个线程象了errupt思路方法,那它对应线程就应该被中断而抛出异常,事实中,当个线程对象errupt思路方法,它对应线程并没有被中断,只是改变了它中断状态
使当前线程状态变以中断状态,如果没有其它影响,线程还会自己继续执行
只有当线程执行到sleep,wait,join等思路方法时,或者自己检查中断状态而抛出异常情况下,线程才会抛出异常
本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2009/1125/18153.php
="xspace-totlerecord">4="xspace-totlepages">1/4="xspace-current">1234>
最新评论