随笔分类 -  Java

摘要:Set的Collection子接口,模拟了数学上的集的概念。 Set集合存储特点: 1.不允许元素重复 2.不会记录元素的先后添加顺序 Set只包含从Collection继承的方法,buguoSet无法记住添加的顺序,不允许包含重复的元素。当试图添加两个相同元素进Set集合,添加操作失败,add() 阅读全文
posted @ 2017-03-19 15:20 wenxudong 阅读(268) 评论(0) 推荐(0)
摘要:泛型(GenericType),从Java5开始支持的新的语法语言: 什么是泛型: 1.广泛通用的类型 2.代码模块中类型不确定,调用该段代码,谁指明类型是什么 泛型类:直接在类/接口上定义的泛型 使用泛型: 保证前后类型相同 List<String> list = new ArrayList<St 阅读全文
posted @ 2017-03-18 18:33 wenxudong 阅读(254) 评论(0) 推荐(0)
摘要:面向接口编程: 接口类型 变量 = new 实现类(); List list = new ArrayList(); List实现类特点和性能分析 三者共同的特点: 1.允许元素重复 2.记录元素的先后添加顺序 Vector类:底层才有数组结构算法,方法都使用了synchronize修饰,线程安全,但 阅读全文
posted @ 2017-03-18 16:52 wenxudong 阅读(150) 评论(0) 推荐(0)
摘要:根据Vector类,ArrayList类,LinkedList类所有具有的存储特点以及拥有的方法入手,发现共性就往上抽取。 共同的特点: 1.允许元素重复 2.会记录先后添加的顺序 3.他们有共同的方法 根据他们的特点,我们就可以指定规范: 尊循该规范的实现类,无论底层算法如何,都必须保证允许元素重 阅读全文
posted @ 2017-03-18 13:03 wenxudong 阅读(171) 评论(0) 推荐(0)
摘要:LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法。 在LinkedList类中存在很多方法,但是功能都是相同的。LinkedList表示了多种数据结构的实现,每一种数据结构的操作名字不同。 阅读全文
posted @ 2017-03-18 10:45 wenxudong 阅读(243) 评论(0) 推荐(0)
摘要:ArrayList类是java集合框架出现之后取代Vector类的 二者底层原理都是基于数组的算法,一模一样。 区别: Vector:所有的方法都使用了synchronize修饰符 线程安全但是性能较低,适用于多线程环境。 ArrayList:所有的方法都没使用synchronize修饰符 线程不安 阅读全文
posted @ 2017-03-17 17:24 wenxudong 阅读(235) 评论(0) 推荐(0)
摘要:栈(Stack):数据结构的一种存储特点先进后出 官方建议:使用栈尽量使用Deque接口及其实现提供了LIFO堆栈操作的更完整和一致的set,应该优先使用此set,而非此类。 例如:Deque<Integer> stack = new ArrayDeque<Integer>(); 阅读全文
posted @ 2017-03-17 16:52 wenxudong 阅读(403) 评论(0) 推荐(0)
摘要:在JDK2之前(在Java集合框架之前),要存储多个数据,此时存在一个叫Vector类。 Vector类底层其实就是一个Object数组,Vector类中的方法是支持同步(方法使用 synchronized修饰)的。 Vector类设计原理:查看源代码 Vector类存储原理: 通过源码分析,发现V 阅读全文
posted @ 2017-03-17 16:39 wenxudong 阅读(650) 评论(0) 推荐(0)
摘要:Java集合框架的由来: 其实在Java2之前,Java是没有完整的集合框架的。他只有一些简单的可以自扩展的容器类,比如Vector,Stack,Hashtable等。 为什么存在容器类:容器类(集合类)可以存储多个数据,既然数组可以存储多个数据,为什么需要定义容器类 数组的弊端: 1.长度是不可变 阅读全文
posted @ 2017-03-17 15:33 wenxudong 阅读(758) 评论(0) 推荐(0)
摘要:什么是数据结构: 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术相关。 常见的数据结构,数组(Array),栈(Stack),链表(Linked 阅读全文
posted @ 2017-03-16 15:59 wenxudong 阅读(561) 评论(0) 推荐(0)
摘要:在JDK的java.util包中提供了Timer类,可以定时执行特定的任务 TimerTask类表示定时器执行的某一项任务 常用方法: schedule(TimerTask task,long delay,long perlod); schedule(TimerTask task,long dela 阅读全文
posted @ 2017-03-16 15:09 wenxudong 阅读(450) 评论(0) 推荐(0)
摘要:线程休眠:让执行的线程暂停一段时间,进入计时等待状态。 方法:static void sleep(long millis) 调用sleep后,当前线程放弃CPU,在指定时间段之内,sleep所在线程不会获得执行的机会 此时状态下的线程不会释放同步锁/同步监听器 该方法更多的用于模拟网络延迟让多线程并 阅读全文
posted @ 2017-03-14 16:08 wenxudong 阅读(156) 评论(0) 推荐(0)
摘要:生命周期:线程也是有生命周期的,也是存在不同的状态的,状态相互之间的转换。 新建状态,就绪状态,运行状态,阻塞状态,死亡状态。 有人把阻塞状态,等待状态,计时等待状态合称为阻塞状态。 线程对象的状态存放在Thread类的内部类(State)中: 注意:Thread.State类其实是一个枚举类。因为 阅读全文
posted @ 2017-03-12 11:56 wenxudong 阅读(186) 评论(0) 推荐(0)
摘要:多线程通信的时候很容易造成死锁,死锁无法解决只能避免: 当A线程等待由B线程持有的锁,而B线程正在等待A线程持有的锁时,发生死锁现象,JVM不检测也不避免这种情况,所以程序员必须保证不导致死锁。 避免死锁法则:当多个线程都要访问共享的资源A,B,C时,保证每一个线程都按照相同的顺序去访问他们,比如都 阅读全文
posted @ 2017-03-12 10:55 wenxudong 阅读(214) 评论(0) 推荐(0)
摘要:wait和notify方法,只能被同步监听锁对象来调用,否则报错。 那么问题来了,Lock机制根本就没有同步锁了,也就没有自动获取锁和自动释放锁的概念。 因为没有同步锁,所以Lock机制不能调用wait和notify方法。 解决方案:java5中提供了Lovk机智的同时提供了处理Lock机制的通信控 阅读全文
posted @ 2017-03-12 10:34 wenxudong 阅读(180) 评论(0) 推荐(0)
摘要:线程通信:不同的线程执行不同的任务,如果这些任务有某种关系,线程之间必须能够通信,协调完成工作。 经典的生产者与消费者案例(Producer/Consumer): 分析案例: 1.生产者和消费者应该操作共享的资源(实现方式来做)。 2.使用一个或多个线程来表示生产者(Producer)。 3.使用一 阅读全文
posted @ 2017-02-11 20:19 wenxudong 阅读(296) 评论(0) 推荐(0)
摘要:线程不安全的问题分析: 当多线程并发访问同一个资源对象的时候,可能出现线程不安全的问题。 要解决上述多线程并发访问同一个资源的安全性问题 解决方案:A线程进入操作的时候,B和C线程只能在外等着,A操作结束,A和B和C才有机会进入代码去执行 方式1:同步代码块 语法: synchronized(同步锁 阅读全文
posted @ 2017-01-19 16:59 wenxudong 阅读(247) 评论(0) 推荐(0)
摘要:创建和启动线程,传统有两种方式: 方式1:继承Thread类; 方式2:实现Runnable接口; 线程类(java.lang.Thread):Thread类和Thread的子类才能称之为线程类。阅读API main方法就是一个主线程 方式1:继承Thread类 步骤: 1. 定义一个类A继承于ja 阅读全文
posted @ 2017-01-15 17:19 wenxudong 阅读(342) 评论(0) 推荐(0)
摘要:并行和并发是即相似又有区别(微观概念): 并行:指两个或多个事件在同一时刻点发生; 并发:指两个或多个事件在同一时间段内发生。 在操作系统中,在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单CPU系统中,每一时刻却能有一道程序执行(时间片),故微观上这些程序只能分时地交替执 阅读全文
posted @ 2017-01-15 09:53 wenxudong 阅读(146) 评论(0) 推荐(0)
摘要:主要还是要多查文档API这里只是提示一些主要的。 当查看API的时候,发现没有公共构造器,但是方法又不是static修饰符修饰的,立马就要意识到,该类中至少有一个static方法用于返回当前对象。这就体现了单例模式。 和系统相关的类: System:表示系统的意思 Runtime:表示java的运行 阅读全文
posted @ 2017-01-09 14:47 wenxudong 阅读(359) 评论(0) 推荐(0)