欢迎来到天天文库
浏览记录
ID:39550081
大小:278.50 KB
页数:17页
时间:2019-07-06
《JAVA多线程教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JAVA多线程教程--杭州三部:王飞开发过程碰到多线程相关的问题,中心内部没有相关的资料和范例,只好找回大学的知识,磕磕绊绊,开发成功。总结经验教训,整理出此教程。与大家分享。首先,虽然操作系统是多线程的,java程序是多线程的,但一个CPU每一时刻只能做一件事。【引言:】此为引言,可以跳过。总的来说:1,多线程的目的是为了最大限度的利用CPU资源。2,对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程产生的时候,操作系统不分配新的内存,而是让新线程共享原有的进程块的内存。3,操作的系统的多进程实现了多任务并发执行,程序的多线程实现了进程的并
2、发执行。多任务、多进程、多线程的前提都是要求操作系统提供多任务、多进程、多线程的支持。----------------------------------------------------------------------------------------------------------------------随着计算机的飞速发展,个人计算机上的操作系统也纷纷采用多任务和分时设计,将早期只有大型计算机才具有的系统特性带到了个人计算机系统中。一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立
3、的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java程序通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制;但与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进
4、程小的多,正因如此,线程被称为轻负荷进程(light-weightprocess)。一个进程中可以包含多个线程。程序(program)是对数据描述与操作的代码的集合,是应用程序执行的脚本进程(process)是程序的一次执行过程,是系统运行程序的基本单位多任务(multitask)是指在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每个任务对应一个进程同进程一样,一个线程也有从创建、运行到消亡的过程,称为线程的生命周期。用线程的状态(state)表明线程处在生命周期的哪个阶段。线程有创建、可运行、运行中、阻塞、死亡五种状态。通过线程的控制与调度可使线
5、程在这几种状态间转化。每个程序至少自动拥有一个线程,称为主线程。当程序加载到内存时,启动主线程。要加载其他线程,程序就要使用Runnable接口和Thread类从系统方面:一般来说,当运行一个应用程序的时候,就启动了一个进程,当然有些会启动多个进程。启动进程的时候,操作系统会为进程分配资源,其中最主要的资源是内存空间,因为程序是在内存中运行的。在进程中,有些程序流程块是可以乱序执行的,并且这个代码块可以同时被多次执行。实际上,这样的代码块就是线程体。线程是进程中乱序执行的代码流程。当多个线程同时运行的时候,这样的执行模式成为并发执行。多线程的目的是为了最大限度
6、的利用CPU资源。Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的。每用java命令启动一个java应用程序,就会启动一个JVM进程。在同一个JVM进程中,有且只有一个进程,就是它自己。在这个JVM环境中,所有程序代码的运行都是以线程来运行。一般常见的Java应用程序都是单线程的。比如,用java命令运行一个最简单的HelloWorld的Java应用程序时,就启动了一个JVM进程,JVM找到程序程序的入口点main(),然后运行main()方法,这样就产生了一个线程,这个线程称之为主线程。当main方法结束后
7、,主线程运行完成。JVM进程也随即退出。对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程产生的时候,操作系统不分配新的内存,而是让新线程共享原有的进程块的内存。因此,线程间的通信很容易,速度也很快。不同的进程因为处于不同的内存块,因此进程之间的通信相对困难。实际上,操作的系统的多进程实现了多任务并发执行,程序的多线程实现了进程的并发执行。多任务、多进程、多线程的前提都是要求操作系统提供多任务、多进程、多线程的支持。 在Java程序中,JVM负责线程的调度。线程调度是值按照特定的机制为多个线程分配CPU的使用权。调度的模式有两种:分时调度和抢
8、占式调度。分时调度是所有线程轮流获得C
此文档下载收益归作者所有