java基础知识及易错知识点
一π胡言_ripple
但求成长,不求成功,让成功成为成长的必然结果,这就是成功最正确的道路
展开
-
java中的tiis关键字理解
1、this的作用:-表示类中的属性-可以调用构造方法(使用的时候记得this()要放在构造方法的 首行)-表示当前对象(重要),所谓的当前对象指的是当前正在调用类中方法的对象。 2.static关键字理解 static关键字其实就是代表比如它修饰的属性存原创 2011-10-11 22:42:02 · 721 阅读 · 0 评论 -
semaphore信号灯
//Semaphore可以维护当前访问自身的线程个数,并提供了同步机制。//使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。//Semaphore实现的功能就类似厕所有5个坑,假如有十个人要上厕所,那么同时能有多少个人去上厕所呢?//同时只能有5个人能够占用,当5个人中的任何一个人让开后,其中在等待的另外5个人中又有一个可以占用了。//另外原创 2012-03-25 16:22:29 · 586 阅读 · 0 评论 -
cyclicBarrier同步工具类
public class CyclicBarrierTest {// CyclicBarrier同步工具类// 表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,// 这就好比整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,// 再同时出发到公园游玩,在指定地点集合后再同时开始就餐,… public static void main(原创 2012-03-25 21:32:46 · 714 阅读 · 0 评论 -
java线程理解
// 线程的理解,传统上有两种方式,一种是直接new Thread 大家可以想象,为什么掉start方法就// 可以运行run方法呢?大家可以看Thread的源代码 /** * Causes this thread to begin execution; the Java Virtual Machine * calls the run method原创 2012-03-14 21:54:27 · 1270 阅读 · 0 评论 -
java定时器复习
public class TraditionalTimerTest { private static int count = 0; public static void main(String[] args) {new Timer().schedule(new TimerTask() {//java定时器复习,定时器可以有几种方式实例化 @Override public原创 2012-03-17 23:14:17 · 585 阅读 · 0 评论 -
java线程通信复习
public class TraditionalThreadCommunication { /** * @param args * 这个例子可以理解java的通信机制 * 题目是子线程运行10次,主线程运行100次,然后重复50次 * 遇到这种需求的题目,一般要把结构想清楚,最好把做的同样的事放在一个类 * 机构里面来管理,方便同步和通信 */ publ原创 2012-03-18 17:15:02 · 581 阅读 · 0 评论 -
线程共享2
public class ThreadScopeShareData { private static int data = 0;// 一个ThreadLocal代表一个线程变量,如果有n个线程变量需要共享,那么就可以// 设置n个线程变量ThreadLocal. 如果有几百个呢?可以把几百个变量封装成一个类,// 然后在ThreadLocal 里面存在这个类变量.其实这个Thr原创 2012-03-19 22:14:16 · 590 阅读 · 0 评论 -
线程资源共享3
public class ThreadLocalTest {//这是第三种改进的方式用为线程数据共享。这种方式主要设计思想是运用单例模式,当每个线程产生的对应的对象存放到一个ThreadLocal中去。//然后在线程中来获取。 private static ThreadLocal x = new ThreadLocal(); private static ThreadLocal m原创 2012-03-19 22:25:27 · 526 阅读 · 0 评论 -
ThreadPoolExecutor代码解析
转自:http://www.ticmy.com/?p=243线程池内部有一些状态,先来了解下这些状态的机制。以下用代码注释的方式来解释其中的含义。/*这个是用一个int来表示workerCount和runState的,其中runState占int的高3位,其它29位为workerCount的值。workerCount:当前活动的线程数;runState:线程池的当前状态。转载 2012-12-28 13:49:07 · 1277 阅读 · 1 评论 -
enum的高级应用
public enum Lamp{RED(30){public Lamp nextLamp(){return GREEN;}},GREEN(45){public TrafficLamp nextLamp(){return YELLOW;} },YELLOW(5){public TrafficLamp nextLamp(){return RE原创 2014-08-24 17:43:06 · 722 阅读 · 0 评论 -
Condition实现阻塞序列1
作为一个示例,假定有一个绑定的缓冲区,它支持 put 和 take 方法。如果试图在空的缓冲区上执行 take 操作,则在某一个项变得可用之前,线程将一直阻塞;如果试图在满的缓冲区上执行 put 操作,则在有空间变得可用之前,线程将一直阻塞。我们喜欢在单独的等待 set 中保存 put 线程和 take 线程,这样就可以在缓冲区中的项或空间变得可用时利用最佳规划,一次只通知一个线程。可以使用两个原创 2012-03-25 15:48:46 · 537 阅读 · 0 评论 -
CountDownLatch同步工具类
//CountDownLatch同步工具类//犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,//当计数到达0时,则所有等待者或单个等待者开始执行。这直接通过代码来说明CountDownLatch的作用,//这样学员的理解效果更直接。//可以实现一个人(也可以是多个人)等待其他所有人都来通知他,//这犹如一个计划需要多个领导都签字后原创 2012-03-25 21:44:52 · 643 阅读 · 0 评论 -
java一些小 知识点
1:java语言的多态性多态性主要体现在方法的重载和对象的多态上。方法重载:在一个类中,允许多个方法使用同一个 方法 名字,但是方法 的参数不同,完成不同的功能:对象多态:子类对象可以与父类对象进行相互转换,而且根据其使用的子类的不同,完成不同的功能。对象多态又分原创 2011-10-11 21:46:27 · 573 阅读 · 0 评论 -
java线程池
public class ThreadPoolTest { /** * @param args */ public static void main(String[] args) { //固定线程池的方式ExecutorService threadPool = Executors.newFixedThreadPool(3); //缓存线程池的方式Executor原创 2012-03-24 23:33:54 · 773 阅读 · 0 评论 -
callable&future的使用
//这是callable与future的使用方式public class CallableAndFuture { /** * @param args */ public static void main(String[] args) { ExecutorService threadPool = Executors.newSingleThreadExecutor(原创 2012-03-25 11:50:52 · 692 阅读 · 0 评论 -
lock用法
//互斥锁的用法,类似java中的synchronized用法public class LockTest { /** * @param args */ public static void main(String[] args) { new LockTest().init(); } private void init(){ final Outp原创 2012-03-25 12:03:14 · 673 阅读 · 0 评论 -
基于读写锁的缓存demo
public class CacheDemo { private Map cache = new HashMap(); public static void main(String[] args) { // TODO Auto-generated method stub } private ReadWriteLock rwl = new ReentrantRead原创 2012-03-25 15:04:23 · 564 阅读 · 0 评论 -
condition实现三个线程顺序执行《2》
public class ThreeConditionCommunication { /** * @param args */ public static void main(String[] args) { final Business business = new Business(); new Thread(new Runnable() {原创 2012-03-25 15:53:32 · 910 阅读 · 0 评论 -
Exchanger工具类
//Exchanger//用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,//第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据public class ExchangerTest { public static void main(String[] args) { ExecutorService service = Execu原创 2012-03-25 21:55:21 · 523 阅读 · 0 评论 -
线程读写锁
//读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。//如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;//如果你的代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时候上写锁public class ReadWriteLockTest { public static vo原创 2012-03-25 14:23:00 · 551 阅读 · 0 评论 -
一些流的理解
Filewriter用来写文件。但是bufferWriter可以封装他。BuferWriter有个close方法是关闭此流的意思,但是这个BufferWriter不属于流噻,所以,真实关闭的是BufferWriter的包装的流对象。所以,不用调用该FileWriter的close方法。记得你以前犯的一个错误,就是从文件中读取数据。File.read()方法会返回此次你成功读取的个数。这个很有用,不原创 2014-08-24 22:08:59 · 617 阅读 · 0 评论