欢迎来到天天文库
浏览记录
ID:34389647
大小:267.00 KB
页数:34页
时间:2019-03-05
《java多线程初学者指南系列教程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Java多线程初学者指南系列教程本系列文章从Java线程的基本概念讲起,介绍了线程的创建,线程的生命周期,线程方法的使用,线程的数据传递以及线程的同步等内容。AD:本系列来自NokiaGuy的“真的有外星人吗”博客,系列名称为《Java多线程初学者指南》。整个系列介绍了Java线程的好处,概念和原理,基础操作,高阶操作等内容。51CTO编辑推荐:Java线程从入门到实践系列目录:1.线程简介介绍了什么是Java的线程及多线程的好处。由于Java是纯面向对象语言,因此,Java的线程模型也是面向对象的。2.用Thread类创建线程在Java中创建线程有两种方法:使
2、用Thread类和使用Runnable接口。任何一个Java程序都必须有一个主线程。学习Java多线程,需要先从用Thread类创建线程开始。3.使用Runnable接口创建线程讲解如何使用Runnable接口创建线程。实现Runnable接口的类必须使用Thread类的实例才能创建线程。4.线程的生命周期与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。5.join方法的使用join方法的功能就是使异步执行的线程变成同步执行。6.慎重使用volatile关键字volatile关
3、键字用于声明简单类型变量,如int、float、boolean等数据类型。使用它有一定的限制。7.向线程传递数据的三种方法由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。8.从线程返回数据的两种方法从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。9.使用Synchronized关键字同步类方法要达成Java多线程的run方法同步,需要在void和public之间加上synchronized关键字。10.使用Synchronized块同步方法我们不仅可以通过synch
4、ronized块来同步一个对象变量,也可以使用synchronized块来同步类中的静态方法和非静态方法。11.使用Synchronized块同步变量讲解如何使用Synchronized块同步变量。我们可以通过synchronized块来同步特定的静态或非静态方法。初学Java多线程:线程简介本文为Java多线程初学者系列的第一篇,简单介绍了什么是Java的线程及多线程的好处。由于Java是纯面向对象语言,因此,Java的线程模型也是面向对象的。AD:一、线程概述线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序
5、时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。进程和线程是现代操作系统中两个必不可少的运行模型。在操作系统中可以有多个进程,这些进程包括系统进程(由操作系统内部建立的进程)和用户进程(由用户程序建立的进程);一个进程中可以有一个或多个线程。进程和进程之间不共享内存,也就是说系统中的进程是在各自独立的内存空间中运行的。而一个进程中的线可以共享系统分派给这个进程的内存空间。线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间
6、也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。注意:任何一个线程在建立时都会执行一个函数,这个函数叫做线程执行函数。也可以将这个函数看做线程的入口点(类似于程序中的main函数)。无论使用什么语言或技术来建立线程,都必须执行这个函数(这个函数的表现形式可能不一样,但都会有一个这样的函数)。如在Windows中用于建立线程的API函数CreateThread的第三个参数就是这个执行函数的指针。在操作系统将进程分成多个线程后,这些线程可以在操作系统的管理下并发执行,从而大大提高了程序的运行效率。虽然线程的执
7、行从宏观上看是多个线程同时执行,但实际上这只是操作系统的障眼法。由于一块CPU同时只能执行一条指令,因此,在拥有一块CPU的计算机上不可能同时执行两个任务。而操作系统为了能提高程序的运行效率,在一个线程空闲时会撤下这个线程,并且会让其他的线程来执行,这种方式叫做线程调度。我们之所以从表面上看是多个线程同时执行,是因为不同线程之间切换的时间非常短,而且在一般情况下切换非常频繁。假设我们有线程A和B。在运行时,可能是A执行了1毫秒后,切换到B后,B又执行了1毫秒,然后又切换到了A,A又执行1毫秒。由于1毫秒的时间对于普通人来说是很难感知的,因此,从表面看上去就象A和
8、B同时执行一样,但实际上
此文档下载收益归作者所有