摘要:importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;/**本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西 阅读全文
posted @ 2011-12-17 23:38 远哥 阅读(374) 评论(0) 推荐(0) 编辑
摘要:/***Exchanger让两个线程互换信息*实例模拟服务生和顾客,服务生往空杯子中倒水,顾客从装满水的杯子中喝水,然后互换杯子,服务生接着倒水,顾客接着喝水.*//***使用Exchanger的关键技术点如下:*1.初始化Exchanger对象时,可以通过泛型指定杯子能交换的信息类型.如"newExchanger<String>;"表示只能交换String类型的信息*2.Exchanger的exchange方法表示当前线程准备交换信息,等待其他线程与它交换信息.当有其他线程调用该Exchanger对象的exchange方法时,立即交换信息*/publiccla 阅读全文
posted @ 2011-12-17 23:37 远哥 阅读(282) 评论(0) 推荐(0) 编辑
摘要:importjava.util.Random;importjava.util.concurrent.CyclicBarrier;/***CyclicBarrier维持一个计数器,与CountDownLatch不同的是,等待这个CyclicBarrier的线程必须等到计数器的某个值时,才可以继续.*CyclicBarrier就像它名字的意思一样,可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍.*//***本实例实现一个数组相邻元素的加法,一个线程给数组的第一个元素赋值,然后等待其它线程给数组第二个元素赋值,然后将第一个元素和第二个元素相加.*//***CyclicBarrier的关键技 阅读全文
posted @ 2011-12-17 23:36 远哥 阅读(254) 评论(0) 推荐(0) 编辑
摘要:importjava.util.concurrent.CountDownLatch;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;/***CountDownLatch维护一个计数器,等待这个CountDownLatch的线程必须等到计数器为0时才可以继续.*以下实例模拟服务器的启动,假设启动一个服务器需要初始化3个组件,当3个组件初始化完毕后,服务器才算成功启动.*//***使用CountDownLatch的关键技术点如下:*1.构造CountDownLatch对象时,需要指定计数 阅读全文
posted @ 2011-12-17 23:35 远哥 阅读(375) 评论(0) 推荐(0) 编辑
摘要:importjava.util.ArrayList;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.Semaphore;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;/***Java5.0里新增加了4个协调线程间进程的同步装置,它们分别是:Semaphore,CountDownLatch,CyclicBarr 阅读全文
posted @ 2011-12-17 23:34 远哥 阅读(341) 评论(0) 推荐(0) 编辑
摘要:importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;/***有时候线程取得lock后需要在一定条件下才能做某些工作,比如经典的Producer和Consumer问题*在Java5.0以前,这种功能是由Object类的wait(),not 阅读全文
posted @ 2011-12-17 23:33 远哥 阅读(401) 评论(0) 推荐(0) 编辑
摘要:importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.Future;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReadWriteLock;importjava.util.concurrent.locks.ReentrantLock;importjava.util.concurrent.locks.ReentrantReadWriteLoc 阅读全文
posted @ 2011-12-17 23:32 远哥 阅读(1115) 评论(0) 推荐(0) 编辑
摘要:importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.Future;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;/**在J2SE之前启动一个任务 阅读全文
posted @ 2011-12-17 23:31 远哥 阅读(857) 评论(0) 推荐(0) 编辑
摘要:importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.Future;/**从本节开始,主要介绍J2SE5.0与线程相关的新特性,新的线程类主要集中在java.util.concurrent包中,本节实例将介绍如何使用java.util.concurrent.Callable和java.util.concurrent.Future类,用Callable定义一个任务并启 阅读全文
posted @ 2011-12-17 23:30 远哥 阅读(1311) 评论(0) 推荐(0) 编辑
摘要:importjava.lang.management.ClassLoadingMXBean;importjava.lang.management.CompilationMXBean;importjava.lang.management.GarbageCollectorMXBean;importjava.lang.management.ManagementFactory;importjava.lang.management.MemoryMXBean;importjava.lang.management.OperatingSystemMXBean;importjava.lang.managemen 阅读全文
posted @ 2011-12-17 23:29 远哥 阅读(850) 评论(0) 推荐(0) 编辑
摘要:importjava.lang.annotation.ElementType;importjava.lang.annotation.Target;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;/**关键技术*1.Java常用的内置注释*@Override放在方法的修饰符前,表示该方法覆盖了父类的同名同参数方法,如果该方法没有覆盖父 类的方法而使用了该注释,则编译器会报错*@Deprecated放在变量和方法的访问修饰符前,表示该变量或者方法已经不推荐使用,通常是因为它很危险或者存在 阅读全文
posted @ 2011-12-17 23:29 远哥 阅读(630) 评论(0) 推荐(0) 编辑
摘要:importjava.util.ArrayList;importjava.util.Collection;importjava.util.List;/***泛型编程关键掌握两点:*1.在方法参数中使用通配符*2.在方法的参数类型和返回类型中使用通用类型*//**关键技术*1.通配符问号(?)表示任意类型.如"List<?>"表示可以存放任意对象类型的List*2.通配符可以接extends和super,表示有限制的通配符.如"List<? extends Parent>"*声明的List能且仅能存放Parent及其子类的对象,而& 阅读全文
posted @ 2011-12-17 23:28 远哥 阅读(434) 评论(0) 推荐(0) 编辑
摘要:importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Iterator;importjava.util.List;importjava. 阅读全文
posted @ 2011-12-17 23:26 远哥 阅读(12119) 评论(4) 推荐(1) 编辑
摘要:importjava.util.Date;/***使用printf输出*//**关键技术点*使用java.io.PrintStream的printf方法实现C风格的输出*printf方法的第一个参数为输出的格式,第二个参数是可变长的,表示待输出的数据对象*/publicclassPrintf {publicstaticvoidmain(String[] args) {/***输出字符串***/// %s表示输出字符串,也就是将后面的字符串替换模式中的%sSystem.out.printf("%s",newInteger(1212));// %n表示换行System.out. 阅读全文
posted @ 2011-12-17 23:25 远哥 阅读(429) 评论(0) 推荐(0) 编辑
摘要:/***在J2SE5.0之前,当传入到方法的参数个数不固定时,经常采用数组的方式传递参数*在J2SE5.0之后,可以使用可变长参数的我给方法传递参数*//***在参数类型和参数名之间使用"..."(三个英文的点),表示该参数为可变长的*通过新的for循环读取可变长参数中的值*一个方法里最多只能有一个变长参数,而且这个变长参数一定要放在参数表的最后一个参数*/importstaticjava.lang.System.*;publicclassVarArgs {publicstaticvoidprint(Integer... s){for(ints2:s){//解封out.pr 阅读全文
posted @ 2011-12-17 23:24 远哥 阅读(547) 评论(0) 推荐(0) 编辑
摘要:/***静态导入:是指可以import类的静态方法和静态变量,在使用时,无须指定类名,*便可以使用这些被import的静态方法和静态变量,这就是静态导入*写import语句时,可以定位到一个静态方法或静态变量(以前是定位到类)*可以使用通配符(*)代表导入该类的所有静态方法和静态变量*不允许静态方法和静态变量出现重名的情况*/importstaticjava.lang.Math.max;//导入了Math的max方法importstaticjava.lang.Math.min;//导入了Math的min方法importstaticjava.lang.Integer.*;//导入了Integer 阅读全文
posted @ 2011-12-17 23:24 远哥 阅读(295) 评论(0) 推荐(0) 编辑
摘要:/***enum关键字表示枚举类型,它的作用相当于类声明中的class关键字*枚举类型不能有public的构造方法*所有的枚举值都是public、static、final的,这些修饰符都是自动加上,无须程序员手动添加*枚举值之间用逗号","分开,最后一个枚举值后面接分号";"*每一个枚举值是一个枚举类型的实例*可以在枚举类型中定义非枚举值变量,这些变量可以使用任何修饰符*变量和方法的定义必须在枚举值后面定义*/publicclassEnumType {/**人Person的枚举类型*/enumPerson{CHINESE,//中国人AMERICAN,// 阅读全文
posted @ 2011-12-17 23:23 远哥 阅读(372) 评论(0) 推荐(0) 编辑
摘要:importjava.util.ArrayList;importjava.util.List;/***新的for循环,格式为for(typex:typey)*表示遍历数组或集合y的元素,把元素值赋给x*/publicclassForEach {/**对整数数组求和*/publicstaticlonggetSum(int[] nums)throwsException{if(nums ==null)thrownewException("错误的参数输入,不能为null!");longsum = 0;//依次取得nums元素的值并累加for(intx : nums){sum += 阅读全文
posted @ 2011-12-17 23:22 远哥 阅读(447) 评论(0) 推荐(0) 编辑
摘要:/***基本类型的数据值可以直接赋给基本数据对象,基本数据的对象也可以直接赋给基本数据变量*在表达式中,基本类型的数据值可以和基本数据对象进行运算*基本数据类型的数组不能实现自动装箱和拆箱,即int[]不能当成Integer[]使用*//***演示基本数据类型的自动拆箱和装箱*/publicclassAutoBox {/**整数类型的自动拆箱和装箱*/publicstaticvoidintAutoBox(){//可以装基本数字类型赋给数字对象//在J2SE之前,必须用iObj = new Integer(200);inti = 100;Integer iObj = 200;//将200装箱Sy 阅读全文
posted @ 2011-12-17 23:20 远哥 阅读(803) 评论(0) 推荐(0) 编辑
摘要:该设置办法适用于所有android手机,当然包括U8800了。* 首先手机一定要有ROOT权限,关于如何获得ROOT权限,这里就不多说了,一般安装个ROOT的小软件就搞定了。安装一个R.E管理器(Root Explorer),运行R.E软件,点上面的只读和改写切换按钮,将当前模式改为改写,然后进入到 /system/usr/keylayout 目录下,在触摸屏上长按 qwerty.kl 文件,在弹出的菜单中选择文本编辑器方式打开,编辑该文件的内容即可改变手机上每个按键的功能了,例如:修改“搜索”键为锁屏,也就是相当于电源键的黑屏功能,可以修改:key 217 SEARCH改为:key 217. 阅读全文
posted @ 2011-12-17 20:09 远哥 阅读(12600) 评论(0) 推荐(1) 编辑