Java_Tag标签_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
当前位置:程序员俱乐部 >>Tag标签 >> Java >>列表
锁的释放-获取建立的happensbefore关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:classMonitorExample{inta=0;publicsynchronizedvoidwriter(){//1a++;//2}//3publicsynchronizedvoidreader(){//4inti=a;//5……}//6}假设线程A执行writer()方法... 查看全文
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说明这两个规则:publicclassFinalExample{inti;//普通变量finalintj... 查看全文
下载JDK,其中包含1.5,1.6和7的版本:官方下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html还有个debug版本的下载地址为:http://download.java.net/jdk6/6u25/promoted/b03/index.html我本机都是使用的32位,所以此处就下载的是:jdk-6u21-windows-i586.exe具体配置步骤如下:1.安装完成刚下载的jdk-6u21... 查看全文
最近做一个项目,用到了ToolProvider.getSystemJavaCompiler()编译Java类出现一个奇怪的现象:在EclipseIDE中测试完全没有问题,部署到Web服务器中从前台界面跑起来,就会卡着不动,也没有报错,跟踪了一下,找到ToolProvider.getSystemJavaCompiler()为null上网搜了下,直接说就是找不到jdklib目录下tools.jar文件,没法编译之前我设置JAVA_HOME在java\jdk更改为Java\jre... 查看全文
· Java的内存泄露发布时间:2014-05-06
Java有垃圾回收,因此不会出现内存泄露。大错特错。这个说法存在好几个问题。尽管Java的确有垃圾回收器来回收那些不用的内存块,但你不要指望它能够点铁成金。GC减轻了开发人员肩上的负担,而原本的那些工作非常容易出错,不过并不是所有内存分配的问题它都能够解决。更糟糕的是,Java的设计允许它可以欺骗GC,使得它能够保留一些程序已经不再使用的内存。经历了20年的C开发以及7年的Java开发后(中间有重叠),我敢说,在这方面Java绝对是远比C/C++要好。尽管它仍有改进的空间... 查看全文
· 求推箱子的最小步数(java)发布时间:2014-05-06
题目(poj1475):推箱子,要求箱子移动步骤最小。如图:T为目标地,B为箱子,S为推箱子的人,要求将B推到T,步骤最少。[输入输出]:[解题分析]:题解:双重bfs,先对箱子bfs,然后判断这种bfs是否可达(对人bfs)下面是AC过的代码:importjava.util.*;importjava.io.*;publicclassMain{intr;//地图行数intc;//地图列数intbegx,begy;//箱子开始坐标intendx,endy;//目标坐标intbegsx,begsy... 查看全文
开始之前先吐槽一下,妈蛋实现代码花了一个小时,调试起码花了一晚上,终于在这时候差不多了。和jdk的对比了下,10W以下的数据还好,10W以上就开始差别大了。不管怎么说还是实现了。原先是想把HashMap的源码分析一起弄上来的不过在实现的过程中就差不多把源码分析一遍了,其他小伙伴很多都分析了就不再出博客分析了,直接上代码:packagecom.hash.demo;/***自己实现一个hash表,参考了jdk的HashMap的源码**@authorLinhaoxinag**@param<... 查看全文
· java中map使用.equals方法发布时间:2014-05-06
关键是要看map中装的是什么,如果map中的对象全是可用.equals的对象,譬如仅有String与自己重写了.equals方法的对象,则可以使用。如果map的值中有List,则必须保证比较的list中元素的顺序是一致的。... 查看全文
LOG.debug("数据文件存入IC_CARD_POOL过程开始.................");StringproductNo=(String)ctx.getAttribute("product_no");longmillis0=System.currentTimeMillis();IntegerbatchNo=Integer.valueOf(Integer.parseInt(ctx.getJobNo()));StringjobDate=(String)ctx... 查看全文
· java libsvm使用说明发布时间:2014-05-05
[size=medium]其他关于svm和libsvm的东西这里不再赘述,本文主要介绍下我在用libsvm过程中遇到的问题进行一下说明,网上资料大多数都是关于libsvm参数的一些说明,这里简单介绍下如何用java代码运行一个小例子。首先我们要下载libsvmjar包,然后我把svm_train,svm_scale,svm_predict三个类文件复制了出来,主要是了解一下内部实现。接着准备好训练数据集合测试数据集。数据文件格式如下,label是类别,index是feature即特征或者维... 查看全文
synchronized关键可以修饰函数、函数内语句。无论它加上方法还是对象上,它取得的锁都是对象,而不是把一段代码或是函数当作锁。1,当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一段时间只能有一个线程得到执行,而另一个线程只有等当前线程执行完以后才能执行这块代码。2,当一个线程访问object中的一个synchronized(this)同步代码块时,其它线程仍可以访问这个object中是其它非synchronized(this)代码块。3... 查看全文
多线程和并发性并不是什么新内容,但是Java语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个Thread类,可以用它来构建、启动和操纵线程,Java语言包括了跨线程传达并发性约束的构造——synchronized和volatile。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变得更容易了。synchronized快速回顾把代码块声明为synchronized,有两个重要后果... 查看全文
· JAVA的Date类与Calendar类【转】发布时间:2014-05-05
Date类在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。1、使用Date类代表当前系统时间Dated=newDate();System.out.println(d);使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下:SunMar0816:35... 查看全文
· Java获取当前路径发布时间:2014-05-05
1、利用System.getProperty()函数获取当前路径:System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径2、使用File提供的函数获取当前路径:Filedirectory=newFile("");//设定为当前文件夹try{System.out.println(directory.getCanonicalPath());//获取标准的路径System.out.println(directory... 查看全文
· Java:不用就卸载吧!发布时间:2014-05-05
编者按:在《2010年10月编程语言排行榜》里我们详细向大家介绍了Java的混乱。尽管混乱的Java政治世界已经让我们厌烦,但是不可否认,Java依旧是最受关注的编程语言,Java的前景依旧被很多人看好,尤其是互联网巨头们:10月13日,Oracle和IBM这对老冤家宣布将在OpenJDK方面进行合作。这两家公司表示,它们要使OpenJDK社区成为开源软件“Java企业版”的主要开发阵地。两家公司的合作将集中在Java语言、Java开发工具和Java运行时间环境等方面... 查看全文
· java之yield(),sleep(),wait()区别详解发布时间:2014-05-05
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完毕后,低优先级的线程才能够执行;但是高优先级的线程sleep(500)后,低优先级就有机会执行了。总之... 查看全文
· 深入理解Java内存模型(一)发布时间:2014-05-05
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。同步是指程序用于控制不同线程之间操作发生相对顺序的机制... 查看全文
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a=1;b=a;写一个变量之后,再读这个位置。写后写a=1;a=2;写一个变量之后,再写这个变量。读后写a=b;b=1;读一个变量之后,再写这个变量。上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性... 查看全文
· 用JavaScript的5个原因发布时间:2014-05-05
英文原文:5ReasonstoProgramJavaScript你可能不喜欢JavaScript,也有一个很好的理由。自从90年代末,JavaScript就一直处于崛起阶段,主要是在网站和应用程序开发方面的崛起。早期不同浏览器之间的不兼容性导致了需要开发各种库,来处理各种差异,在这点上最流行的是jQuery,当然也有很多其他的。在那断不兼容时期,由于支持不同浏览器的麻烦,很多开发者们放弃了JavaScript。其实JavaScript是唯一可以在通过嵌入浏览器端显示HTML后运行的语言... 查看全文
· java 遍历Map的四种方法发布时间:2014-05-05
packagecom.ickes;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;/***遍历Map的四种方式*@authorIckes**/publicclassMapTest{publicstaticvoidmain(String[]args){Map<String,String>map=newHashMap<String... 查看全文