1.LinkedHashSet有序链式集合 举例: long startTime=System.currentTimeMillis(); LinkedHashSet oprTypeSet = new LinkedHashSet(); for(String it : arr) { oprTypeSet.add(it); } Iterator it=oprTypeSet.iterator(); while(it.hasNext()) { System.out.println((String)it.n…
Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,可以将它简单地看作是一个"可变长度的Object数组".Java 集合可分为 Collection 和 Map 两种体系: 1. Collection接口:表示不按添加顺序存放对象的集合,集合内元素可以重复,即"无序可重复&…
4.对继承自Runnable的线程进行锁机制的使用 package com.lfy.ThreadsSynchronize; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class TicketSellSolution4 implements Runnable { private static int num = 50; //创建一个锁对象 Lock…
1.第一种解决办法:同步代码块,关键字synchronized package com.lfy.ThreadsSynchronize; /** * 1.使用同步代码块 * 语法: synchronized (同步锁) { //需要同步操作的代码 } 同步锁:为了保证每个线程都能正常的执行原子操作,Java 线程引进了同步机制:同步锁也叫同步监听对象.同步监听器.互斥锁: Java程序运行使用的任何对象都可以作为同步监听对象,但是一般我们把当前并发访问的共同资源作为同步监听对象 注意:同步锁一定要…
1.经典问题,火车站售票,公共票源箱,多个窗口同时取箱中车票销售 package com.lfy.ThreadsSynchronize; /** * 解决办法分析:即我们不能同时让超过两个以上的线程进入到 if(num>0)的代码块中 * 1.使用 同步代码块 2.使用 同步方法 3.使用 锁机制 */ public class TicketSell1 extends Thread{ //定义一共有 50 张票,注意声明为 static,表示几个窗口共享 private static int n…
3.使用锁机制lock,unlock package com.lfy.ThreadsSynchronize; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 1.使用锁机制 * 语法:lock(),unlock() */ public class TicketSellSolution3 extends Thread{ private static int…
5.测试 package com.lfy.ThreadsSynchronize; public class Test { public static void main(String[] args) { //创建 3 个窗口 // TicketSell1 t1 = new TicketSell1("A窗口"); // TicketSell1 t2 = new TicketSell1("B窗口"); // TicketSell1 t3 = new TicketSell…
2.使用方法同步 package com.lfy.ThreadsSynchronize; /** * 1.使用同步方法 * 语法:即用 synchronized 关键字修饰方法(注意是在1个对象中用锁还是多个对象之间用锁,1个对象级用锁,只能是同一个对象,多个对象之间用锁,只能使用类锁,方法还需要添加static修饰) 注意:不能直接用 synchronized 来修饰 run() 方法,因为如果这样做,那么就会总是第一个线程进入其中,而这个线程执行完所有操作,即卖完所有票了才会出来. */ p…
Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆盖的概念.覆盖被用来支持多态.实际开发中Java通常继承于抽象类,实现于接口.如果不希望一个类被继承,或者一个方法被覆盖,或者一个成员变量被改变,就可以用final修饰.这里只说明两个问题:1,重载和覆盖的区别重载和覆盖的区别:重载发生在同一个类之中,重载要求函数名相同,参数不同(参数个数||参数类…
 Java面向对象   继承(下) 知识概要:               (1)抽象类 1.1 抽象类概述                            1.2 抽象类的特点                            1.3 抽象类举例代码讲解                            1.4 抽象类相关问题               (2)模板方法模式 2.1 模板设计模式的概念 2.2 模板设计模式的演示               (3)接口    …