- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java培训第9章线程
第9章 线程;;什么是进程?
进程就是一个在内存中独立运行的程序,有自己的地址空间 。
“多任务”:指操作系统能同时运行多个进程(程序)。如WIN2K系统可以同时运行写字板程序、画图程序、WORD、EXCEL等。
线程:
是进程内部单一的一个顺序控制流。;文件;多线程的优势
减轻编写交互频繁、涉及面多的程序的困难。
程序的吞吐量会得到改善。
有多个处理器的系统,可以并发运行不同的线程。(否则,任何时刻只有一个线程在运行);JAVA线程的概念模型
虚拟的CPU,由java.lang.Thread类封装和虚拟
CPU所执行的代码,传递给Thread类对象。
CPU所处理的数据,传递给Thread类对象。;线程体
Java的线程是通过java.lang.Thread类来实现的。
每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体(即线程的可执行代码)。;主线程
在任何Java程序启动时,一个线程立刻运行(即mian方法对应的线程),该线程通常称为程序的主线程。
主线程的特点:
它是产生其他子线程的线程。
它不一定是最后完成执行的线程,子线程可能在它结束之后还在运行。
;创建线程方法(两种)
声明一个 Thread 类的子类,并覆盖 run() 方法。
class mythread extends Thread {
public void run( ) {/* 覆盖该方法*/ }
}
声明一个实现 Runnable 接口的类,并实现 run() 方法。
class mythread implements Runnable{
public void run( ) {/* 实现该方法*/ }
}
用start()方法启动线程:
Thread t1 = new Thread();
T1.start();;public class TestThread {//主类用于执行程序,不扩展Thread类
public static void main(String[] args){
Thread t = new MyThread();//创建线程对象
t. start();//启动线程t,它会自动调用run方法
}
}
class MyThread extends Thread {//线程类,必须扩展Thread类
public void run() {//线程对象的可执行代码
for(int i=0; i5; i++) {
System.out.println(SubThread: + i);
}
}
};(2)实现Runnable接口;扩展;线程共有下面4种状态:
new(新建):当你用new创建一个线程时,该线程尚未运行。
runnable(可运行):一旦调用了start方法,该线程便是一个可运行的线程。可运行的线程可以尚未执行,也??以正在执行,取决于线程调度的结果
blocked(被中断运行):当出现下列操作之一时,线程便进入中断状态:
有人调用该线程的sleep()方法;
该线程调用了wait()方法;
该线程调用了一个在输入输出时中断的操作,也就是说,在输入和输出操作完成之前,该操作不会返回到它的调用程序;
该线程试图锁定一个当前被另一个线程锁定了的对象
dead(死亡):由于下面两个原因,线程将变成死线程:
由于run方法的正常退出而自然死亡;
没有捕获到的异常事件终止了run方法的执行,从而导致线程突然死亡;;new Thread();线程常用方法;import java.util.*;
public class TestSleep
{ public static void main(String args[ ])
{ MyThread thread=new MyThread();
thread.start();
try{ Thread.sleep(5000);}
catch(InterruptedException e){}
thread.interrupt(); }
}
class MyThread extends Thread
{ public void run()
{ while(true)
{ System.out.println(===+new Date());
try{ Thread.sleep(1000);
}
ca
文档评论(0)