Java
GaoMatrix
这个作者很懒,什么都没留下…
展开
-
Java多线程编程总结笔记——一多线程基础知识
这是网上一位牛人写的ava多线程编程总结:http://lavasoft.blog.51cto.com/62575/27069,作为初步学习Java多线程编程非常好,现将学习笔记和心得记录下来。 一、认识多任务、多进程、单线程、多线程 以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情。比如你在copy东西的时候不能ren原创 2011-06-28 15:19:00 · 1421 阅读 · 0 评论 -
Java多线程设计模式详解学习笔记七——Producer-Consumer
public class Main { public static void main(String[] args) { Table table=new Table(3); new MakerThread("MakerThread-1", table, 12345).start(); new MakerThread("MakerThread-2", table, 54345).sta原创 2011-11-17 15:24:00 · 4450 阅读 · 0 评论 -
Java多线程Synchronized心得
转载:http://www.vanjor.org/blog/2011/04/java-synchronized/两年前,在编写一个多线程采集器的时候,写了一篇心得《Java多线程Synchronized的注意细节》,但是随后的使用中,发现仍然没有完全分清场景与背后原理。现在随着实际应用,终于也有所新的成熟的理解了。Synchronized是java语言级别内置的同步机制转载 2011-07-06 13:58:12 · 6094 阅读 · 0 评论 -
Java多线程编程总结笔记——四创建与启动
在调用start()方法之后:发生了一系列复杂的事情,启动新的执行线程(具有新的调用栈);该线程从新状态转移到可运行状态;当该线程获得机会执行时,其目标run()方法将运行。一些常见问题 1、线程的名字,一个运行中的线程总是有名字的,名字有两个来源,一个是虚拟机自己给的名字,一个是你自己的定的名字。在没有指定线程名字的情况下,虚拟机总会为线程指定名字,并且主线程的名字总是mian,非主转载 2011-07-22 15:54:36 · 849 阅读 · 0 评论 -
Java多线程设计模式详解学习笔记五——GuardedSuppension
public class Main { public static void main(String[] args) { RequestQueue requestQueue=new RequestQueue(); new ClientThread("Alice",requestQueue, 3141592L).start(); new ServerThread("原创 2011-08-17 16:11:59 · 992 阅读 · 0 评论 -
Java多线程设计模式详解学习笔记六——Balking
public class Main { public static void main(String[] args) { Data data=new Data("data.txt","(empty)"); new ChangerThread("ChangerThread", data).start(); new SaverThread("SaverThread", data).sta原创 2011-08-18 15:53:56 · 869 阅读 · 0 评论 -
Java多线程设计模式详解学习笔记八——Read-Write Lock Pattern
Read-Write Lock Pattern原创 2011-11-23 13:13:49 · 1205 阅读 · 0 评论 -
按位与
public static boolean isDebuggable(Context context) { try { PackageInfo pInfo = context.getPackageManager().getPackageInfo( context.getPackageName(), PackageManager.GET_META_DATA); if (pInf原创 2011-12-15 09:33:59 · 1199 阅读 · 0 评论 -
Java中Split函数的用法技巧
转载:http://www.cnblogs.com/liubiqu/archive/2008/08/14/1267867.html在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧。如执行:"2|33|4".split("|")出来的结果是:""2|33转载 2011-12-14 11:31:23 · 811 阅读 · 0 评论 -
Eclipse 插件
EasyExplorer 是一个类似于 Windows Explorer的Eclipse插件,它可以帮助你在不退出Eclipse的环境下浏览本地文件系统 下载的jar包放到eclipse的plugin目录下后,重启eclipse,在eclipse里选中任何一个文件。右键 选中 Easy Explorer,就可以打开该文件所在的目录了。原创 2011-12-15 10:47:15 · 883 阅读 · 0 评论 -
Java多线程编程总结笔记——六线程的同步与锁
同步和锁定:关于锁和同步,有一下几个要点:1)、只能同步方法,而不能同步变量和类;2)、每个对象只有一个锁;当提到同步时,应该清楚在什么上同步?也就是说,在哪个对象上同步?3)、不必同步类中所有的方法,类可以同时拥有同步和非同步方法。4)、如果两个线程要执行一个类中的synchronized方法,并且两个线程使用相同的实例来调用方法,那么一次只能有一个线程能够执行方法,另一转载 2011-08-01 10:46:20 · 1481 阅读 · 0 评论 -
Java多线程编程总结笔记——五线程状态的转换
一、线程状态线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:1、新状态:线程对象已经创建,还没有在其上调用start()方法。2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,转载 2011-07-22 16:29:20 · 1908 阅读 · 0 评论 -
Java多线程设计模式详解学习笔记二
wait、notify、notifyAll都是Object类的方法wait、notify、notifyAll都是java.lang的Object类的方法,不是Thread类固有的方法,作用分别为:obj.wait()是把现在的线程放到obj的wait set;obj.notify()是从obj的wait set里唤醒一个线程;obj.notifyAll()是唤醒所有在obj的wai原创 2011-08-16 08:13:17 · 947 阅读 · 0 评论 -
Java多线程设计模式详解学习笔记——Introduction1 Java语言的线程
GUI应用程序 几乎所有的GUI应用程序都会用多线程。举例来说加入现在有人在用word编辑一个比较大的文本文件刚刚才做过单字“查找”操作,当word进行查找时,屏幕上会出现“停止查找按钮”,用户可以随时停止查找。这个功能其实就用到了多线程。(1)执行查找(2)显示按钮,若按钮按下则停止查找 这两个操作分别交给不同的线程进行。这样一来执行线程(1)的线程可以专心查找,执行(2原创 2011-07-16 10:09:30 · 1902 阅读 · 0 评论 -
Java多线程编程总结笔记——一多线程基础知识
读解Thread类API:构造方法摘要Thread(Runnable target) 分配新的 Thread 对象。Thread(String name) 分配新的 Thread 对象。方法摘要static Thread currentThread() 返回对当前正在执行的线程对象的引用。 Cla原创 2011-07-20 14:19:03 · 1641 阅读 · 0 评论 -
Java多线程编程总结笔记——二概念与原理
操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程转载 2011-07-20 14:30:54 · 1154 阅读 · 0 评论 -
Java多线程设计模式详解学习笔记四——Immutable
public class Main { public static void main(String[] args) { Person alice = new Person("Alice", "Alaska"); new PrintPeronThread(alice).start(); new PrintPeronThread(alice).start(); n原创 2011-08-17 11:45:20 · 1165 阅读 · 1 评论 -
Java多线程设计模式详解学习笔记九——Thread-Per-Message
public class Main { public static void main(String[] args) { System.out.println("Main Begin"); Host host = new Host(); host.request(10, 'A'); host.request(20, 'B'); host.request(30, 'C');原创 2011-11-23 13:24:39 · 3359 阅读 · 0 评论 -
什么是守护线程
在Java中比较特殊的线程是被称为守护(Daemon)线程的低级别线程。这个线程具有最低的优先级,用于为系统中的其它对象和线程提供服务。将一个用户线程设置为守护线程的方式是在线程对象创建之前调用线程对象的setDaemon方法。典型的守护线程例子是JVM中的系统资自动回收线程,它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。原创 2011-06-28 15:14:00 · 3078 阅读 · 1 评论 -
【转】Java 程序中的多线程
http://www.ibm.com/developerworks/cn/java/multithreading/线程间发信 当线程在继续执行前需要等待一个条件时,仅有 synchronized 关键字是不够的。虽然 synchronized 关键字阻止并发更新一个对象,但它没有实现 线程间发信 。Object 类为此提供了三个函数:wait()、notify() 和 notify转载 2011-07-12 23:16:44 · 844 阅读 · 0 评论 -
【转】编写多线程的 Java 应用程序
http://www.ibm.com/developerworks/cn/java/j-thread/线程是什么?一个程序或进程能够包含多个线程,这些线程可以根据程序的代码执行相应的指令。多线程看上去似乎在并行执行它们各自的工作,就像在一台计算机上运行着多个处理机一样。在多处理机计算机上实现多线程时,它们确实 可以并行工作。和进程不同的是,线程共享地址空间。也就是说,多个线程能转载 2011-07-13 00:05:24 · 888 阅读 · 0 评论 -
Java多线程编程总结笔记——三线程栈模型与线程的变量
要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。下面通过一个示例性的代码说明线程(调用)栈的变化过程这幅图描述在代码执行到两个不同时刻1、2时候,虚拟机线程调用栈示意图。当程转载 2011-07-20 15:30:37 · 1035 阅读 · 0 评论 -
类的声明周期 一
1.类的生命周期从类被加载、连接和初始化开始,到类被卸载结束。当类处于声明周期中时,他的二进制数据位于方法区内,在堆区内还会有一个相应的描述这个类的Class对象。只有当类处于生命周期中时,Java程序才能使用他,比如调用类的静态属性和方法,或者创建类的实例。当通过java命令运行一个java程序时,就启动了一个java虚拟机进程。java虚拟机进程从启动到终止的过程,称为java虚拟机的原创 2011-12-19 23:26:57 · 2804 阅读 · 0 评论 -
Java异常处理 一
1.异常处理的越早,损失越小2.在一些传统的编程语言中,如C语言中,没有专门处理异常的机制,程序员通常用方法的特定返回值来表示异常情况。Java语言按照面向对象的思想来处理异常,使得程序具有更好的可维护性,Java语言处理异常具有以下优点: >把各种不同类型的异常情况进行分类,用Java类来表示异常情况,这种类被称为异常类。把异常情况表示成异常类,可以充分发挥类的可扩展和可重用的优势原创 2011-12-18 11:33:25 · 2794 阅读 · 0 评论 -
从网络下载html页面和图片
public class InternetTest{ @Test public void getImage() throws Exception{ String urlPath="http://www.google.com.hk/intl/zh-CN/images/logo_cn.png"; URL url=new URL(urlPath); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.原创 2011-02-22 22:24:00 · 1508 阅读 · 0 评论 -
String类的进一步学习二
今天在对一个字符串进行操作的时候比较悲剧,基础不牢固,捣鼓了半天。public class StringTest { public static void main(String[] args) { String path="/mnt/sdcard/gao.txt"; path.replaceFirst("/mnt", ""); System.out.println(path); String pathSub="/mnt/sdcard/gao.txt"; pa原创 2011-03-10 21:18:00 · 912 阅读 · 0 评论 -
Junit单元测试学习01
之前学习过junit3.8,今天学习一下junit4.x,在Android平台上也有相关的单元测试,可以说junit已经是单元测试的标准,现在将单元测试用在编程中确实没给我提高多大的效率,但是相信当真正熟练应用junit单元测试,并理解Junit里面单元测试的原理和其中的设计模式,必将给今后的编程带来很大的提高。下面是要进行测试的类:public class Calculator { public int add(int oper1,int oper2){ return oper1+oper2;原创 2011-02-15 22:29:00 · 1225 阅读 · 0 评论 -
String类的进一步学习一
String str=new String("abc");这个到底创建了几个对象,记得刚学Java的时候困扰了自己很长时间,现在把这方面的只是系统的学一下。1.String str是在栈中声明了一个String类型变量,并没有创建任何对象。2."="是将某个对象的引用赋给某个变量,也没有创建对象。3."abc"是在字符串池中创建一个对象,当然如果字符串池中已经有了,就不需要创建。4.new String()很明显是创建了一个String对象。所已说创建了一个或者两个对象,如果之前字符串池中已经有了"abc"原创 2011-02-15 19:23:00 · 978 阅读 · 0 评论 -
Java中Integer
<br />public class ConstantPool { public static void main(String[] args) { Integer integer1=100; Integer integer2=100; System.out.println(integer1==integer2); //Integer i=100; 编译器会自动将int类型常数100包装成Interger,采用的是Integer.valueOf(100); 这个方法。 In原创 2011-02-14 13:48:00 · 2402 阅读 · 0 评论 -
XStream解析XML学习一
今天看到在Android上面写的一个程序,解析xml使用的是XStream技术,以前没有听说过,今天来把它学习一下,对于简单的使用来说这个是比较简单的。这个例子是参照官网上面的例子写的:http://xstream.codehaus.org/tutorial.html1.首先构造想要序列化的类Person.java:public class Person { private String firstname; private String lastname; private PhoneNumbe原创 2011-03-05 12:19:00 · 7152 阅读 · 0 评论 -
java代码将数组元素顺序颠倒
<br />java代码将数组元素顺序颠倒,这个程序很简单,是想纠正自己之前的一些错误的认识:<br /> <br />public class SwapDemo{ public static void main(String[] args){ int [] a = new int[]{ //Math.random() a pseudorandom double greater than or equal to 0.0 and less than 1.0 (int)(M原创 2011-02-14 15:57:00 · 13822 阅读 · 0 评论 -
Java中可变参数VariableParameter
<br />public class VariableParameter { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(add(2,4,3)); System.out.println(add(2,3,4,5)); } /** *args当成一个数组进行处理 */ public static int add(in原创 2011-02-14 13:55:00 · 1123 阅读 · 0 评论 -
单利模式扩展,用缓存控制实例个数
<br />JavaEye上作者chjavach写的研磨设计模式非常好,现在正在学习。里面的单利模式扩展,用缓存控制实例个数对与深入理解单例模式非常有帮助,学习一下:<br />/** * 简单演示如何扩展单例模式,控制实例数目为3个 */public class OneExtend { /** * 定义一个缺省的key值的前缀 */ private final static String DEFAULT_PREKEY = "Cache"; /** * 缓存实例的原创 2011-02-15 15:13:00 · 1109 阅读 · 0 评论 -
Ant学习笔记一
<br />记得在之前有一个电话面试,对方问我知道会用Ant么,当时一脸茫然,不会是“蚂蚁”吧?,自己之前确实没有听说过更别说用过了,也注定那次电话面试以失败告终。现在把这个Ant好好学习一下。<br />Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能<br />一。首先是下载Ant,我下载的是apache-ant-1.8.2-bin,然后加压到盘,然后就是要配置环境变量,这个和安装java jdk时候的环境变量的配置是一样的。<br /><br />这样环境变量就原创 2011-03-12 23:13:00 · 872 阅读 · 0 评论 -
Java中数值类型准换
之前一直没有注意过Java中的数值类型的互相转换,今天遇到了一个这方面的问题被小小的困扰了一会,现在做个记录,总结一下这方面。public class JavaTest { public static void main(String[] args) { long time=0; double span=0.15; time+=span; System.out.pr原创 2011-06-08 14:24:00 · 1229 阅读 · 0 评论 -
Java设计模式--单例模式
<br />单例模式的实现可以分为两类:懒汉式,饿汉式。区别从他们的名字上面就可以看出来,懒汉式也就是加载这个类的时候不生成,只有在首次主动调用的时候才new这个对象,饿汉式是将实例设成static的也就是加载这个类的时候就自动加载,而不用我们手动调用。<br />下面是懒汉式的实现方式:<br />package com.pattern.singleton;/** * @author GaoMatrix E-mail:gcquan08@gmail.com * @version Time:201原创 2011-04-20 21:37:00 · 907 阅读 · 0 评论 -
六种异常处理的陋习
你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4 Statement stat = conn.createState转载 2011-12-18 10:19:22 · 2924 阅读 · 0 评论 -
高效的java异常处理
1 基本信息摘要:本文倡导一种对异常条件本质的思考方式,并描述一些有助于设计的模式。最后,本文还将在AOP模型中,作为相互渗透的问题,来讨论异常的处理。当你能正确使用异常时,它们会有极大的好处。本文将帮助你做到这一点。原作者:Barry Ruzek 译者: 易晓斓,原文:http://www.yeeyan.com/articles/view/2091/9762 为何异常是如此重要转载 2011-12-18 10:58:19 · 2826 阅读 · 0 评论 -
int与字节数组互相转换
public class ByteTest { public static void main(String[] args) { byte[] result = int2ByteArray(12556); System.err.println("result = " + result[0] + " " + result[1] + " " + result[2] + " " + resu原创 2011-12-02 13:52:42 · 5264 阅读 · 0 评论 -
Java编译错误“No enclosing instance of type AA is accessible. Must qualify the allocation with an enclosi
这是因为AA是一个动态的内部类,创建这样的对象必须有实例与之对应,程序是在静态方法中直接调用动态内部类会报这样错误。 这样的错误好比类中的静态方法不能直接调用动态方法。可以把该内部类声明为static。或者不要在静态方法中调用。那么为啥非静态方法不能调用动态方法呢,从面向转载 2011-10-18 18:17:21 · 1096 阅读 · 0 评论