您的位置:首页 > 其它

移动医疗开始笔记1

2016-05-24 15:12 141 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/lizhiqiang_1234/article/details/51490092

一、前言

在移动医疗行业已经工作5年,积累部分经验,经过研究和搜索发现网上关于这些内容没有基础的入门知识和进阶知识,故开始此笔记之旅。

二、独立做移动医疗具备的知识

一定的java基础知识,包含对集合,io,nio的熟练应用,能实现部分的数据结构,熟悉android中surfaceview图形的双缓冲机制,熟悉多线程的建立,管理,销毁和同步。

三、多线程使用的集合(阻塞列表的实现)

public class LockLinkedList{
private LinkedList quene = new LinkedList();
private int bufferSize = 10000;
private final Object lock = new Object();
private long waitTime;

public LockLinkedList(int bufferSize, long waitTime){
this.bufferSize = bufferSize;
this.waitTime = waitTime;
}

public LockLinkedList(int bufferSize){
this(bufferSize,Integer.MAX_VALUE);
}

public void add(T t){
synchronized(lock){
if(quene != null){
if(quene.size() >= bufferSize){
try{
lock.wait(waitTime);
}catch(InterruptedException e){
e.printStaceTrace();
}
}
}else{
quene = new LinkedList();
}
if(quene != null){
quene.addLast(t);
lock.notifyAll();
}
}
}

public T remove() throws Exception{
synchronized(lock){
if(quene != null){
if(quene.size() <= 0){
try{
lock.wait(waitTime);
}catch(InterruptedException e){
e.printStackTrace();
}
}
lock.notifyAll();
if(quene != null){
return quene.removeFirst();
}
}
return null;
}
}

public void clear(){
synchronized(lock){
if(quene != null){
quene.clear();
quene = null;
lock.notifyAll();
}
}
}

public boolean contains(T t){
synchronized(T t){
return quene != null && quene.contains(t);
}
}

public int size(){
return quene == null ? -1 : quene.size();
}

}
四、下期说明阻塞队列的应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: