- 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第8章
面向对象程序设计Java;第8章 多线程设计;多线程机制;线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制。;进程与线程之间的差别主要体现在两个方面:;线程由三部分组成:;一个建立线程的例子:;多线程实现方法;实现Thread子类方法的多线程;实现Thread子类方法的多线程示例;class SecondThread extends Thread {
public void run() {
try{
System.out.println(\tSecond thread starts running.);
for(int i=0; i6; i++) {
System.out.println(\tSecond + i);
sleep(1000);
}
System.out.println(\tSecond thread finishes running);
}catch (InterruptedException e) {}
}
};public class ThreadTest1 {
public ThreadTest1() {
FirstThread first = new FirstThread();
SecondThread second = new SecondThread();
first.start();
second.start();
}
public static void main(String[] args) {
new ThreadTest1();
}
};实现Runnable接口方法的多线程;实现Runnable接口多线程示例;class SecondThread implements Runnable {
public void run() {
try {
System.out.println(\tSecond thread starts running.);
for(int i=0; i6; i++) {
System.out.println(\tSecond + i);
Thread.sleep(1000);
}
System.out.println(\tSecond thread finished.);
}catch(InterruptedException e) {}
}
};public class RunTest {
public RunTest() {
FirstThread first = new FirstThread();
SecondThread second = new SecondThread();
Thread thread1 = new Thread(first);
Thread thread2 = new Thread(second);
thread1.start();
thread2.start();
}
public static void main(String[] args) {
new RunTest();
}
};多线程状态及调度;可执行态:处于可执行环境中,随时可以被调度而执行。它可细分为两个子状态:
执行状态,已获得CPU,正在执行;
就绪状态,只等待处理器资源。这两个子状态的过渡由执行调度器来控制。;线程的控制;应用程序中的多个线程能够并发执行,即线程数在多于处理机数时是串行地执行,那么如何来决定哪一个线程先执行?
Java引入了优先级的概念,优先级就是线程获得CPU而执行的优先程度,优先级越高,获得CPU的权力越大,执行的机会越多???执行的时间也越长。
Java把优先级划分为10级,用1至10的整数表示,数值越大,优先级越高。;多线程状态及调度;调度就是分配CPU资源,确定线程的执行顺序。
Java采用抢占式调度方式,即高优先级线程具有剥夺低优先级线程执行的权力。
如果一个低优先线程正在执行,这时出现一个高优先级线程,那么低优先级线程就只能停止执行,放弃CPU,推回到等待队列中,等待下一轮执行,而让高优先级线程立即执行。;如果线程具有相同的优先级,则按“先来先服务”的原则调度。
让高优先级线程执行一段时间后,能够交出使用权,放弃CPU。有两个方法可以达到这一
文档评论(0)