- 博客(11)
- 收藏
- 关注
原创 常见的List接口的实现类
常见的List接口的实现类ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)LinkedList:双向链表实现,增删快,查询慢 (线程不安全)Vector:数组实现,重量级 (线程安全、使用少)ArrayList实现类public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializab
2021-02-28 22:22:25 443
原创 集合中的接口
数据结构1、线性表(数组)存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找(前提是必须有序)时间复杂度小,为O(1);数组的特点是:寻址容易(arr[n]=arr[0]+n*每个元素的长度,时间复杂度为O(1))插入和删除困难(可能会引发一半以上的数据元素移动,时间复杂度为O(n));Java中的数组是定长的,如果需要变长则需要自行编程实现2、链表存储区间离散(数据不是连续存放的),占用内存比较宽松,故空间复杂度很小,但操作元素的时间复杂度很大,达O(N)。链表的特点
2021-02-27 20:37:50 139
原创 多线程之间的数据通讯方法
多线程之间的数据通讯方法生产者消费者模式生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括生产者、消费者、仓库和产品。他们之间的关系如下:生产者仅仅在仓储未满时候生产,仓满则停止生产。消费者仅仅在仓储有产品时候才能消费,仓空则等待。当消费者发现仓库没产品可消费时候会通知生产者生产。生产者在生产出可消费产品时候,应该通知等待的消费者去消费。编码实现仓库类,产品就是仓库的属性data//临界资源public class Basket { private volatile Obj
2021-02-26 21:12:13 572
原创 线程安全
线程安全多线程的执行顺序不可重现,但是必须要求执行结果必须可以重现线程的共享数据操作不完整性就一定会出现数据被破坏,而导致结果无法预知的问题—线程的安全问题同步处理的引入在java语言中存在两种内建的synchronized语法:synchronized代码块和synchronized方法( 静态方法和非静态方法)可以解决线程安全问题首先synchronized将并行改为串行,当然会影响程序的执行效率,执行速度会受到影响。其次synchronized操作线程的堵塞,也就是由操作系统控制CPU的内核
2021-02-26 20:58:15 86
原创 线程的调度机制及线程同步问题
调度机制具体的调度实现分为操作系统和JVM操作系统的调度机制有多种,一般常见的有2种:时间片Unix和抢占式windows所有的Java虚拟机都有一个线程调度器,用来确定那个时刻运行那个线程。主要有两种调度模型:分时调度模型和抢占式调度模型基于时间片轮转法的抢占式调度。线程调度器会给高优先级有更多的运行机会,如果优先级相同则随机选中,执行时长到达时间片后从新进行调度线程的调度不是跨平台的,它不仅取决于Java虚拟机,还依赖于操作系统。在某些操作系统中,即使运行中的线程没有遇到阻
2021-02-25 20:05:04 616
原创 线程状态切换
线程状态切换线程从创建并启动到消亡共经历了5种状态:新建、就绪、运行、阻塞和死亡线程变化的5状态转换:1、新建状态(New):新创建了一个线程对象。new Thread()2、就绪状态(Runnable):线程对象创建后,其它线程调用了该对象的start()方法。只能针对处于新建状态的 线程对象调用start方法,否则IllegalThreadStateException该状态的线程位于可执行线程池中,变得可执行,等待获取CPU的使用权。3、执行状态(Running):就绪状态的线程获取了CP
2021-02-24 21:24:27 705
原创 线程练习题
基础练习题1. 多线程使用的优缺点?优点 :1)多线程技术使程序的响应速度更快2)当前没有进行处理的任务可以将处理器时间让给其它任务3) 占用大量处理时间的任务可以定期将处理器时间让给其它任务4)可以随时停止任务5)可以分别设置各个 任务的优先级以及优化性能缺点:1)等候使用共享资源时造成程序的运行速度变慢2)对线程进行管理要求额外的cpu开销3)可能出 现线程死锁情况。即较长时间的等待或资源竞争以及死锁等症状。2. start()方法和run()方法简介和区别?start()方法
2021-02-23 20:59:02 337
原创 多线程编程细节
多线程编程细节Thread类Thread类实现了Runnable接口,所以Thread对象也是可运行Runnable对象,同时Thread类也是线程类构造器Thread()//一般用于在Thread类中覆盖定义run方法,可以使用匿名内部类进行定义 Thread(Runnable)//使用最多的情况,run方式是由Runnable参数对象提供 Thread(String name) //自定义线程名称 Thread(Runnable,String name) … … //常见简化写法
2021-02-23 20:55:09 351
原创 线程
什么是线程池创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数 有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作 线程。从JDK1.5开始,Java API提供了Executor框架可以创建不同的线程池。比如单线程池,每次处理一个任务;数目固 定的线程池或者是缓存线程池(一个适合很多生存期短的任务的程序的可扩展线程池)new Thread的弊端每次new Thread新建对象性能差。线程缺乏统一管
2021-02-23 20:09:48 62
原创 线程的编程4种实现方法
线程的编程4种实现方法1、继承ThreadThread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。public class Thread implements Runnable @FunctionalInterface //函数式接口,其中包含一个抽象方法run public interface Runnable { public abstract void run(); }启动线程的唯一方法就是通过Thread类的start()实例方法,不能直接调用run()方
2021-02-20 21:11:13 280
原创 过滤流
过滤流类型过滤流就是在节点流的基础上附加功能处理类型字符流字节流缓存BufferedReader、BufferedWriterBufferedInputStream、 BuàeredOutputStream过滤处理FilterReader、FilterWriterFilterInputStream、FilterOutputStream桥接处理InputStreamReader、 OutputStreamWriter对象序列化处理ObjectInpu
2021-02-19 21:27:05 649
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人