
Java技术
文章平均质量分 53
surealin
这个作者很懒,什么都没留下…
展开
-
Java数组声明、创建、初始化
本文讲述了Java数组的几个相关的方面,讲述了对Java数组的声明、创建和初始化,并给出其对应的代码。一维数组的声明方式:type var[]; 或type[] var;声明数组时不能指定其长度(数组中元素的个数),Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]实例:TestNew.java:...原创 2011-02-24 14:04:11 · 131 阅读 · 0 评论 -
JAVA编程经验汇总
都是一些小的点,不完整但是有意义[b]JDK和JRE[/b]大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做。因为这样更能帮助大家弄清楚它们的区别:Jre 是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦, 还有所有java类库的class文件,都在...原创 2011-11-04 21:04:43 · 146 阅读 · 0 评论 -
多线程例子:wait与notify、sleep
[code="java"]package sure;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Test { private static Logger log = LoggerFactory.getLogger(Test.class); public s...原创 2011-11-09 22:15:57 · 162 阅读 · 0 评论 -
多线程例子:join
[code="java"]package sure;import java.util.Random;public class MultThread { public static void main(String[] args) { System.out.println("in " + Thread.currentThread().get...原创 2011-11-09 23:06:05 · 126 阅读 · 0 评论 -
String的valueOf方法传入null
这个问题很有意思[code="java"]Object obj = null; System.out.println(String.valueOf(obj)); System.out.println(String.valueOf(null));[/code]第一句可以打印出null,但是第二句报空指针异常。造成这种区别的原因在于两者选取了不同的重载方法。...原创 2011-11-12 20:42:49 · 622 阅读 · 0 评论 -
多线程例子:yield
[code="java"]public class Test { public static void main(String[] args) { Thread t1 = new MyThread1(); Thread t2 = new Thread(new MyRunnable()); t2.start(); t1.start(); }}cla...原创 2011-11-14 20:59:55 · 113 阅读 · 0 评论 -
关于java多线程的一篇不错的入门级文章
虽然都是老生常谈,而且入门级,但是讲的很不错。一、理解多线程多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。多个线程的执行是并发的,也就...原创 2011-11-14 22:42:39 · 99 阅读 · 0 评论 -
多线程常用方法比较汇总
从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。但是[u]当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。[/u](这是yield的使用目的)或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep。sleep方法不推荐使用,可用wa...原创 2011-11-15 23:07:35 · 142 阅读 · 0 评论 -
成员变量的初始化
Java会对成员变量进行自动初始化,并且在构造方法执行之前完成。比如:[code="java"]public class Finally { int a =1; Finally(){ a =2; } public static void main(String[] args){ Finally f = new Finally(); }}[/c...原创 2011-11-16 16:15:00 · 154 阅读 · 0 评论 -
Object类分析equals、hashcode、clone
Object类中的equals:[code="java"]public boolean equals(Object obj) { return (this == obj); }[/code]可见equals方法就是比较引用是不是相同,感觉挺没用的一个方法。所以String类覆盖为:[code="java"]public boolean equals(Obj...原创 2011-11-17 21:57:38 · 146 阅读 · 0 评论 -
以ConcurrentHashMap为例小议并发集合类
为了引出并发集合类ConcurrentHashMap,有必要先说说Hashtable和Collections.synchronizedMap。这里先把结论拿出来,下面会仔细介绍:[u]三者都是线程安全的,其中Hashtable和 Collections.synchronizedMap是同步的,由于使用map范围的锁因此可伸缩性较差。ConcurrentHashMap则利用一系列精妙的设计提...2011-08-09 22:15:33 · 118 阅读 · 0 评论 -
聊一下Java代理那点事
[size=large][color=indigo][b]代理模式 [/b][/color][/size]代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有:[list][*]抽象角色:声明真实对象和代理对象的共同接口;[*...2011-08-06 20:08:01 · 183 阅读 · 0 评论 -
说说volatile关键字
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。而volatile关键字就是提示JVM:(这就是volatile的[b]原理[/b])对于这个成员变量不能保存它的私有拷贝(在线程栈),而应直接与共享成员变量(...2011-08-05 16:29:43 · 133 阅读 · 0 评论 -
java线程池的原理与实现
简单介绍 创建线程有两种方式:继承Thread或实现Runnable。Thread实现了Runnable接口,提供了一个空的run()方法,所以不论是继承Thread还是实现Runnable,都要有自己的run()方法。 一个线程创建后就存在,调用start()方法就开始运行(执行run()方法),调用wait进入等待或调用sleep进入休眠期,顺利运行完毕或休眠被中断或运...原创 2011-06-16 17:02:50 · 105 阅读 · 0 评论 -
java的内部类与匿名类
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的...原创 2011-06-18 13:19:04 · 116 阅读 · 0 评论 -
Java:使用Executors创建和管理线程
[size=large]1. 类 Executors[/size]此类中提供的一些方法有:1.1 public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。 1.2 public stati...原创 2011-03-08 20:45:51 · 109 阅读 · 0 评论 -
Java多线程总结之由synchronized说开去
[i][size=large][color=green]更新完毕,结贴,以后有新的想法再开新帖[/color][/size][/i]这几天不断添加新内容,给个大概的提纲吧,方面朋友们阅读,各部分是用分割线隔开了的:[color=indigo][size=large][list][*]synchronized与wait()/notify()[*]JMM与synchronized[...2011-07-10 17:19:13 · 162 阅读 · 0 评论 -
使用反编译工具jad
(1)把jad.exe和所要反编译的class文件放在同一目录下(2)执行命令jad -sjava *.class这样就在该目录下生成了一个java文件通过反编译可以清楚了了解到,泛型的工作是在编译的时候完成的,而多态的工作在编译的时候还没有涉及jad.exe文件见附件...原创 2010-12-06 11:03:09 · 152 阅读 · 0 评论 -
Java多线程总结之聊一聊Queue
上个星期总结了一下synchronized相关的知识,这次将Queue相关的知识总结一下,和朋友们分享。在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为[b]阻塞队列和非阻塞队列[/b],其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要...2011-07-17 23:13:46 · 251 阅读 · 0 评论 -
深入浅出Java回调机制
前几天看了一下Spring的部分源码,发现回调机制被大量使用,觉得有必要把Java回调机制的理解归纳总结一下,以方便在研究类似于Spring源码这样的代码时能更加得心应手。注:本文不想扯很多拗口的话来充场面,我的目的是希望以最简明扼要的语言将Java回调的大概机制说清楚。好了,言归正传。一句话,[b]回调[/b]是一种双向调用模式,什么意思呢,就是说,被调用方在被调用时也会调用对方...2011-07-21 21:24:29 · 278 阅读 · 0 评论 -
关于Java包装类装箱拆箱的小例子
简单来说:[b]装箱[/b]就是把值类型转变为引用类型,[b]拆箱[/b]就是把引用类型转变为值类型其实这东西没什么好说的,上代码看看就明白了:[code="java"]/** * @author hellosure * @time 2011-7-27 上午8:10:46 * @description:装箱拆箱例子 */public class Test {...2011-07-27 09:50:53 · 156 阅读 · 0 评论 -
小议时序调度Timer和Quartz
本文不是用来讲授入门手把手ABC小例子的,算是自己这段时间对Timer和Quartz使用心得的总结吧,后续如果有更深的认识会不断更新的。言归正传,想实现定时调度,最简单的方法是使用[b]Timer[/b]还是先给个使用范例:[code="java"]long PERIOD = 60*1000;//一分钟Timer timer = new Timer("sure's time...2011-07-28 21:15:26 · 157 阅读 · 0 评论 -
关于继承的例子
继承是再普通不过的概念,但是你真的能玩的转吗?父类Person[code="java"]public class Person { public void getName(){ System.out.println("person name"); } public void getPersonAge(){ System.out.println("per...原创 2011-11-19 15:13:20 · 188 阅读 · 0 评论