java
ange_li
一个android app 开发工程师
展开
-
在GSYVideoPlayer中实现VLC 内核
GSYVideoPlayer 是一个比较火的开源框架。其支持Android 系统中的MediaPlayer内核,ExoPlayer 内核, ijkPlayer 内核。 在我使用的过程中发现不支持h265格式的avi 文件播放,所以我实现了一个VLC内核。import android.content.Context;import android.net.Uri;import android.os.Handler;import android.view.Surface;import android原创 2021-12-17 18:19:37 · 2627 阅读 · 0 评论 -
密码中至少包含一个特殊字符,数字,字母,的8-16位密码的正则表达式
private boolean isAvailablePassword(String password) { return password.matches( "^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[~!@#$%^&*()_+|<>,.?/\\\\:;'\\[\\]{}\"]).{8,16}$"); }原创 2021-05-08 16:37:48 · 1772 阅读 · 0 评论 -
java 偏向锁 轻量级锁 重量级锁
前言:java的线程是映射到操作系统的原生线程上的,如果要阻塞和唤醒线程,需要操作系统帮忙,要从用户态转为核心态,需要花费很多处理器时间。原创 2020-10-22 23:01:31 · 126 阅读 · 0 评论 -
Synchronized 和 ReentrantLock的区别
1.Synchronized 可以作用于代码块,静态方法 ,实例方法。作用于代码块时锁为Synchronized 括号里的对象,作用于静态方法时,锁为当前类的class 对象。作用于实例方法时,锁为对象实例。Synchronized 的使用比ReentrantLock简单,加锁和释放锁的操作都是由虚拟机完成的。2.ReentrantLock的加锁和解锁操作都需要手动完成。...原创 2020-10-20 23:09:11 · 205 阅读 · 0 评论 -
java 线程池
一、先看一个例子:Executor mExecutor=Executors.newSingleThreadExecutor(); 这个方法是创建一个只有一条线程的线程池。可以使用的场景是在下载文件时,我们如果要求一个下载完再下载下一个的情况下,这个时候文件的下载任务(Runable)是多个的,可以共用同一条线程,在节省资源的同时还方便管理,而不是每个任务都重新开一个线程(会消耗性...原创 2016-01-07 14:37:32 · 255 阅读 · 0 评论 -
HashMap与LinkedHashMap
HashMap 是无序的,线程不安全,数据结构是数组+链表,由key的hashCode 算出的hash值,决定把Map.Entry 存储到数组的哪一个index 里,数组存储的是链表的头,相同hash值,数据加在链表里;LinkedHashMap 是HashMap的子类,线程不安全,数据结构是数组+单链表+双链表,有使Lru算法,先进先出,访问一个值,会把这个值放到双向链的最后。publ...原创 2019-01-04 11:58:55 · 164 阅读 · 0 评论 -
java 多线程—join()
package com.ange.demo.thread;public class ThreadTest { static Thread t1,t2=null; public static void main(String[] args){ System.out.print("hello"); t1=new Thread(new Runna...原创 2019-02-15 10:39:47 · 141 阅读 · 0 评论 -
java 多线程—yield()
package com.ange.demo.thread;public class ThreadTestYield { static Thread t1,t2=null; public static void main(String[] args){ System.out.print("hello"); t1=new Thread(new ...原创 2019-02-15 11:25:06 · 919 阅读 · 0 评论 -
java 多线程——wait() ,sleep()
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池...原创 2019-02-15 14:43:00 · 199 阅读 · 0 评论