- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaSE_09_多线程剖析
1、纲要a) 多线程的基本概念 b) 线程的创建和启动 c) 线程的生命周期d) 线程的调度e) 线程控制f) 线程的同步g) 守护线程h) 定时器的使用i) Windows 的任务计划2、内容2.1、多线程的基本概念线程指进程中的一个执行场景,也就是执行流程,那么进程和线程有什么区别呢?每个进程是一个应用程序,都有独立的内存空间同一个进程中的线程共享其进程中的内存和资源(共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的。)1.什么是进程?一个进程对应一个应用程序。例如:在 windows 操作系统启动 QQ 就表示启动了一个 进程。在 java 的开发环境下启动 JVM,就表示启动了一个进程。现代的计算机都是支持多进程的,在同一个操作系统中,可以同时启动多个进程。2.多进程有什么作用? 单进程计算机只能做一件事情。玩电脑,一边玩游戏(游戏进程)一边听音乐(音乐进程)。 对于单核计算机来讲,在同一个时间点上,游戏进程和音乐进程是同时在运行吗?不是。因为计算机的 CPU 只能在某个时间点上做一件事。由于计算机将在“游戏进程”和“音乐 进程”之间频繁的切换执行,切换速度极高,人类感觉游戏和音乐在同时进行。多进程的作用不是提高执行速度,而是提高 CPU 的使用率。 进程和进程之间的内存是独立的。3.什么是线程? 线程是一个进程中的执行场景。一个进程可以启动多个线程。4.多线程有什么作用?多线程不是为了提高执行速度,而是提高应用程序的使用率。 线程和线程共享“堆内存和方法区内存”,栈内存是独立的,一个线程一个栈。 可以给现实世界中的人类一种错觉:感觉多个线程在同时并发执行。5.java 程序的运行原理?java 命令会启动 java 虚拟机,启动 JVM,等于启动了一个应用程序,表示启动了一个进程。该进程会自动启动一个“主线程”,然后主线程去调用某个类的 main 方法。所以 main方法运行在主线程中。在此之前的所有程序都是单线程的。分析一些程序启动几个线程?public class ThreadTest{public static void main(String[] args){m1();}public static void m1(){m2();}public static void m2(){m3();}public static void m3(){System.out.println(m3......);}}以上程序只要一个线程,就是主线程。main、m1、m2、m3这四个方法在同一个栈空间中。没有启动其他任何线程。2.2、线程的创建和启动Java 虚拟机的主线程入口是 main 方法,用户可以自己创建线程,创建方式有两种:继承 Thread 类实现 Runnable 接口(推荐使用 Runnable 接口)Thread 类中创建线程最重要的两个方法为:public void run() public void start()采用 Thread 类创建线程,用户只需要继承 Thread,覆盖 Thread 中的 run 方法,父类 Thread中的 run 方法没有抛出异常,那么子类也不能抛出异常,最后采用 start 启动线程即可【示例代码】,不使用线程public class ThreadTest01 {public static void main(String[] args) { Processor p = new Processor(); p.run();method1();}private static voidmethod1() {System.out.println(--------method1()----------);}}class Processor {public void run() {for (int i=0; i10; i++) { System.out.println(i);}}}以上顺序输出相应的结果(属于串行),也就是 run 方法完全执行完成后,才执行 method1方法,也就是 method1 必须等待前面的方法返回才可以得到执行,这是一种“同步编程模型”。1、继承Thread类:【代码示例】,使用线程public class ThreadTest02 {public static void main(String[] args) { //创建线程Thread t = new Processor();//手动调用该方法//不能采用 run 来启动一个场景(线程),//run 就是一个普通方法调用//t.run();//start 不是马上执行线程,而是使线程进入就绪,告诉JVM分配一个新栈给t//线程的真正
有哪些信誉好的足球投注网站
文档评论(0)