仓酷云

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

[学习教程] 来看Java同步代码同等于断面

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

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

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

x
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。
同步常常作为断面被援用。断面是指一次只能有一个线程实行它。多个线程同时实行同步代码是有大概的。
这个曲解是由于良多程序员以为同步关头字锁住了它所包抄的代码。可是实践情形不是如许的。同步加锁的是对象,而不是代码。因而,假如你的类中有一个同步办法,这个办法能够被两个分歧的线程同时实行,只需每一个线程本人创立一个的该类的实例便可。
参考上面的代码:
classFooextendsThread
{
 privateintval;
 publicFoo(intv)
 {
  val=v;
 }
 publicsynchronizedvoidprintVal(intv)
 {
  while(true)
   System.out.println(v);
 }
 publicvoidrun()
 {
  printVal(val);
 }
}
classSyncTest
{
 publicstaticvoidmain(Stringargs[])
 {
  Foof1=newFoo(1);
  f1.start();
  Foof2=newFoo(3);
  f2.start();
 }
}
运转SyncTest发生的输入是1和3交织的。假如printVal是断面,你看到的输入只能是1大概只能是3而不克不及是二者同时呈现。程序运转的了局证实两个线程都在并发的实行printVal办法,即便该办法是同步的而且因为是一个无穷轮回而没有停止。
要完成真实的断面,你必需同步一个全局对象大概对类举行同步。上面的代码给出了一个如许的典范。
classFooextendsThread
{
 privateintval;
 publicFoo(intv)
 {
  val=v;
 }
 publicvoidprintVal(intv)
 {
  synchronized(Foo.class){
   while(true)
    System.out.println(v);
  }
 }
 publicvoidrun()
 {
  printVal(val);
 }
}
下面的类不再对一般的类实例同步而是对类举行同步。关于类Foo而言,它只要独一的类界说,两个线程在不异的锁上同步,因而只要一个线程能够实行printVal办法。
这个代码也能够经由过程对大众对象加锁。比方给Foo增加一个静态成员。两个办法都能够同步这个对象而到达线程平安。
<p>
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解
简单生活 该用户已被删除
沙发
发表于 2015-1-21 07:44:21 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
板凳
发表于 2015-1-30 11:21:51 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
admin 该用户已被删除
地板
发表于 2015-2-15 23:55:08 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
第二个灵魂 该用户已被删除
5#
发表于 2015-2-24 23:33:03 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
柔情似水 该用户已被删除
6#
 楼主| 发表于 2015-3-6 19:09:04 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
莫相离 该用户已被删除
7#
发表于 2015-3-7 00:40:45 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
深爱那片海 该用户已被删除
8#
发表于 2015-3-13 23:08:36 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
爱飞 该用户已被删除
9#
发表于 2015-3-20 21:19:09 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
只想知道 该用户已被删除
10#
发表于 2015-4-22 15:42:50 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 07:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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