
java
swjtufq
这个作者很懒,什么都没留下…
展开
-
String,StringBuffer和StringBuilder之我的理解
String和StringBuffer都是JDK 1.0提出来的,StringBuilder是JDK 1.5才有的,StringBuffer和StringBuilder都继承AbstractStringBuilder,下面分别对这三个类的效率进行描述 1 String是不可变对象,对String对象的改变分几种情况Sting s = "a" + "b";这种情况等价于 String s = "ab原创 2016-09-12 15:34:26 · 458 阅读 · 1 评论 -
设计模式-责任链模式
说到责任链模式,几年前有一次面试经历,面试官拿着两页程序来考我设计模式,其实就是责任链模式,今天就来总结下这个模式 其实责任链模式的好处就是让我们省略了很多if/else或者switch语句,多个对象都有机会处理,从而避免了请求的发送者和接受者之间的耦合,形成一个链,沿着这个链传递,知道有一个对象处理为止。 角色: 1 抽象处理者(Handler)角色,定义一个处理请求的接口,定义两个方法,分原创 2016-11-17 15:43:43 · 351 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式中主要有4中角色: 1 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)中,每个主题都可以有任意数量的观察者,抽象主题里提供接口,增加和删除观察者,通知观察者。 2 具体主题(ConcreteSubject)角色:将有关状态,存入具体的观察者对象,当自己状态发生改变时,通知所有的观察者 3 抽象观察者(Observer)原创 2016-11-16 16:10:13 · 255 阅读 · 0 评论 -
设计模式-单例模式
相信大家去面试的时候,经常被问到单例模式的有关问题吧,今天我们就来好好总结一下 一 懒汉式public class Singleton { private static Singleton instance = null; private Singleton() {} public static Singleton getInstance() {原创 2016-11-11 17:28:05 · 240 阅读 · 0 评论 -
java volatile关键字
这个关键字平时用的比较少,但是在面试的时候经常被问到,解释不清楚又比较尴尬,所以今天来聊一聊,java内存模型中所有的变量都是存放在内存中的,线程有自己的工作内存(类似于高速缓存),线程对变量的操作都是在工作内存中进行,不同的线程不能访问其他的线程的工作内存,画个图来表示下: 也就是说内存中的一个变量,每个线程类似于保存了该变量的一个副本,线程对该变量的修改会先保存到工作内存中,然后再同步到内原创 2016-09-20 15:19:19 · 348 阅读 · 0 评论 -
java Lock和Condition的用法
前面我分享了Synchronized的使用,当一个线程访问一个对象的Synchronized方法或者代码块的时候,就持有了锁,除非执行完或者遇到异常(发生异常JVM虚拟机会自动释放锁),才能释放锁,但是如果在执行代码块里sleep了或者有一些耗时很久的操作,那么锁就一直不释放,其他线程就会一直等待下去,Lock可以不让其他线程一直无限等待下去,另外一种情况,当有多个线程读写文件的时候,读和写会发生冲原创 2016-09-19 17:19:46 · 8611 阅读 · 0 评论 -
Synchronized关键字
前面已经写过生产者与消费者的例子了,用到Synchronized关键字,这是java并发的一个关键点,锁机制,我不打算长篇大论,用几个概况的说明,然后每个说明加一段代码的方式来讲解: 一 当两个线程同时访问同一个Object的Synchronized方法或代码块的时候,一个时间只能一个线程执行这段代码,另外一个线程要等待前一个线程执行完这段代码才可以执行:public class Synchron原创 2016-09-19 11:07:48 · 347 阅读 · 0 评论 -
Executor和线程池之我的理解
以前写线程,一般new一个Thread或者实现Runnable接口,jdk1.5之后引入了Executor框架,这个框架可以易于我们对线程的管理,复用线程,节约开销等等,Executor有一个很重要的子类,ExecutorService,也是一个接口,这才是我们经常要用的类,线程池ThreadPoolExecutor的父类实现了ExecutorService这个接口,常用的四个线程池,newCach原创 2016-09-18 19:35:58 · 501 阅读 · 0 评论 -
生产者与消费者问题
最近在看java并发编程,生产者与消费者是个经典题目,5年前去百度面试的时候,让我当场写出这个程序,今天我就回顾一下,这里涉及到几个点,一个生产者,一个消费者,一个馒头实体类,一个馒头筐类,一个main方法类,记住这几个点,生产者和消费者程序就很好写了,代码如下:/* * 生产者与消费者问题 */public class ProduceConsume { public static v原创 2016-09-18 11:09:33 · 339 阅读 · 0 评论 -
设计模式-策略模式
在软件开发中,我们经常遇到针对不同情况使用不同的算法或者逻辑,然后用if/else来控制起来,我们来看个例子,比如说国足要征战世界杯亚洲区12强赛,那么针对不同对手,需要有不同的打法和战术public void test(String duishou){ if(duishou.equals("韩国")){ System.out.println("执行防守反击战原创 2016-11-17 17:22:20 · 249 阅读 · 0 评论