Java多线程初学者指南系列教程
转自:http://developer.51cto.com/art/200911/162925.htm
51cto
本系列来自NokiaGuy的“真的有外星人吗”博客,系列名称为《Java多线程初学者指南》。整个系列介绍了Java线程的好处,概念和原理,基础操作,高阶操作等内容。
51CTO编辑推荐:Java线程从入门到实践
系列目录:
- 线程简介
介绍了什么是Java的线程及多线程的好处。由于Java是纯面向对象语言,因此,Java的线程模型也是面向对象的。 - 用Thread类创建线程
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。任何一个Java程序都必须有一个主线程。学习Java多线程,需要先从用Thread类创建线程开始。 - 使用Runnable接口创建线程
讲解如何使用Runnable接口创建线程。实现Runnable接口的类必须使用Thread类的实例才能创建线程。 - 线程的生命周期
与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。 - join方法的使用
join方法的功能就是使异步执行的线程变成同步执行。 - 慎重使用volatile关键字
volatile关键字用于声明简单类型变量,如int、float、boolean等数据类型。使用它有一定的限制。 - 向线程传递数据的三种方法
由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。 - 从线程返回数据的两种方法
从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。 - 使用Synchronized关键字同步类方法
要达成Java多线程的run方法同步,需要在void和public之间加上synchronized关键字。 - 使用Synchronized块同步方法
我们不仅可以通过synchronized块来同步一个对象变量,也可以使用synchronized块来同步类中的静态方法和非静态方法。 - 使用Synchronized块同步变量
讲解如何使用Synchronized块同步变量。我们可以通过synchronized块来同步特定的静态或非静态方法。
希望通过这个系列的学习,能够帮助读者掌握Java多线程的概念和一些基本操作。在Java线程的实际应用方面还有很多需要考虑的事项,还需要读者们在实践中逐渐摸索。
Java多线程初学者指南系列教程的更多相关文章
- 【系列】Java多线程初学者指南(1):线程简介
原文地址:http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/03/archive/2009/03/19/26075 ...
- Java多线程初学者指南(6):慎重使用volatile关键字
volatile关键字相信了解Java多线程的读者都很清楚它的作用,和sychnorized 一样用于多线程的同步.volatile关键字用于声明简单类型变量,如int.float.boolean等数 ...
- Java多线程初学者指南(7):向线程传递数据的三种方法
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...
- Java多线程初学者指南(12):使用Synchronized块同步变量
我们可以通过synchronized块来同步特定的静态或非静态方法.要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传 ...
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下: public synchronized void run() { ... } 从上面的代码可 ...
- Java多线程初学者指南(9):为什么要进行数据同步
Java中的变量分为两类:局部变量和类变量.局部变量是指在方法内定义的变量,如在run方法中定义的变量.对于这些变量来说,并不存在线程之间共享的问题.因此,它们不需要进行数据同步.类变量是在类中定义的 ...
- Java多线程初学者指南(8):从线程返回数据的两种方法
从线程中返回数据和向线程传递数据类似.也可以通过类成员以及回调函数来返回数据.但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪. 一.通过类变量和方法返回数据 使用这种方法返回数 ...
- Java多线程初学者指南(4):线程的生命周期
与人有生老病死一样,线程也同样要经历开始(等待).运行.挂起和停止四种不同的状态.这四种状态都可以通过Thread类中的方法进行控制.下面给出了Thread类中和这四种状态相关的方法. // 开始线程 ...
- Java多线程初学者指南(11):使用Synchronized块同步方法
synchronized关键字有两种用法.第一种就是在<使用Synchronized关键字同步类方法>一文中所介绍的直接用在方法的定义中.另外一种就是synchronized块.我们不仅可 ...
随机推荐
- HDOJ 1203 I NEED A OFFER!(01背包)
10397507 2014-03-25 23:30:21 Accepted 1203 0MS 480K 428 B C++ 泽泽 题目链接:http://acm.hdu.edu.cn/showprob ...
- [ruby on rails] 跟我学之(6)显示指定数据
根据<[ruby on rails] 跟我学之路由映射>,我们知道,可以访问 GET /posts/:id(.:format) 来显示具体的对象. 1. 修改action 修改 ap ...
- 一张图说明该选用神马程式来serve你的django应用
- C语言 单引号和双引号的区别
最近的C语言课在教字符串,貌似N多同学搞不清楚单引号和双引号的区别,有人还以为在C语言里用哪个都可以...其实C语言中的单引号和双引号含义是一点也不一样滴... 1.含义不同. 用单引号引起的一个字符 ...
- pro git 使用积累
http://www.zhihu.com/question/20070065 git相关问题的收集 Git 是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被 ...
- 【云计算】Docker云平台—Docker基础
Docker云平台系列共三讲,此为第一讲:Docker基础 参考资料: Docker官方文档:https://docs.docker.com/ Docker从入门到实践:https://yeasy.g ...
- iOS和android游戏纹理优化和内存优化(cocos2d-x)(转载)
转自http://blog.csdn.net/langresser_king/article/details/8426708 (未完成) 1.2d游戏最占内存的无疑是图片资源. 2.cocos2d-x ...
- php 字符串负值判断
2014年9月9日 11:54:54 $a = '-1'; $b = (int)$a; $c = is_numeric($a); if ($a) { echo 1; //echo 1 } else { ...
- Java for LeetCode 078 Subsets
Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...
- NanoApe Loves Sequence-待解决
NanoApe Loves Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java ...