仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 423|回复: 10
打印 上一主题 下一主题

[学习教程] 来看Java多线程同步成绩的探求(1、线程的先来后到)

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:02:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。
尽人皆知,在Java多线程编程中,一个十分主要的方面就是线程的同步成绩。
关于线程的同步,一样平常有以下办理办法:
1.在必要同步的办法的办法署名中到场synchronized关头字。
2.利用synchronized块对必要举行同步的代码段举行同步。
3.利用JDK5中供应的java.util.concurrent.lock包中的Lock对象。
别的,为懂得决多个线程对统一变量举行会见时大概产生的平安性成绩,我们不但能够接纳同步机制,更能够经由过程JDK1.2中到场的ThreadLocal来包管更好的并发性。
本篇中,将具体的会商Java多线程同步机制,并对ThreadLocal做出切磋。
大抵的目次布局以下:
1、线程的先来后到——成绩的提出:为何要有多线程同步?Java多线程同步的机制是甚么?
2、给我一把锁,我能制造一个礼貌——传统的多线程同步编程办法有哪些?他们有何异同?
3、Lock来了,人人都闪开——Java并发框架中的Lock详解。
4、合作,互斥下的合作——Java多线程合作(wait、notify、notifyAll)
5、你有我有全都有——ThreadLocal怎样办理并发平安性?
6、总结——Java线程平安的几种办法对照。
1、线程的先来后到
我们来举一个Dirty的例子:某餐厅的洗手间很小,几近只能包容一团体如厕。为了包管不受搅扰,如厕的人进进洗手间,就要锁上房门。我们能够把洗手间设想成是共享的资本,而浩瀚必要如厕的人能够被视作多个线程。假设洗手间以后有人占用,那末其别人必需守候,直到这团体如厕终了,翻开房门走出来为止。这就比如多个线程共享一个资本的时分,是必定要分出先来后到的。
有人说:那假如我没有这道门会如何呢?让两个线程互相合作,谁争先了,谁就能够先干活,如许多好阿?可是我们晓得:假如茅厕没有门的话,如厕的人一同涌向茅厕,那末一定会产生争吵,一般的如厕步骤就会被打乱,很有大概会产生意想不到的了局,比方某些人可能只好自愿在不准确的中央施肥……
恰是由于有这道门,任何一个独自进进如厕的人都能够顺遂的完成他们的如厕历程,而不会被搅扰,乃至产生之外的了局。这就是说,如厕的时分要考究先来后到。
那末在Java多线程程序傍边,当多个线程合作统一个资本的时分,怎样可以包管他们不会发生“打斗”的情形呢?有人说是利用同步机制。没错,像下面这个例子,就是典范的同步案例,一旦第一名入手下手如厕,则第二位必需守候第一名停止,才干入手下手他的如厕历程。一个线程,一旦进进某一历程,必需守候一般的前往,并加入这一历程,下一个线程才干入手下手这个历程。这里,最关头的就是洗手间的门。实在,洗手间的门担当的是资本锁的脚色,只需如厕的人锁上门,就相称于取得了这个锁,而当他翻开锁出来今后,就相称于开释了这个锁。
也就是说,多线程的线程同步机制实践上是靠锁的观点来把持的。那末在Java程序傍边,锁是怎样表现的呢?
<p>
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。
莫相离 该用户已被删除
沙发
发表于 2015-1-19 17:14:20 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
深爱那片海 该用户已被删除
板凳
发表于 2015-1-24 14:53:08 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
老尸 该用户已被删除
地板
发表于 2015-2-1 17:07:56 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-2 11:31:11 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
admin 该用户已被删除
6#
发表于 2015-2-3 12:11:01 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
山那边是海 该用户已被删除
7#
发表于 2015-2-8 21:05:52 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-2-26 10:50:10 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小妖女 该用户已被删除
9#
发表于 2015-3-8 13:35:31 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
活着的死人 该用户已被删除
10#
发表于 2015-3-16 00:15:35 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
精灵巫婆 该用户已被删除
11#
发表于 2015-3-22 18:10:23 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 03:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表