300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java高级工程师线程_java高级工程师--------多线程并发

java高级工程师线程_java高级工程师--------多线程并发

时间:2020-01-28 11:03:46

相关推荐

java高级工程师线程_java高级工程师--------多线程并发

线程池(java5中)

ExecutorService threadPool =Executors.newFixedThreadPool(3);//创建固定大小的线程池

ExecutorService threadPool=Executors.newCachedThreadPool();//创建缓存线程池,动态变化线程数量,一段时间之后销毁未使用的线程

ExecutorService threadPool=Executors.newSingleThreadExecutor();//创建单一线程,当线程死掉之后立马启动替补线程

lock condition 实现线程同步通信

lock类似于synchronized,但是比synchronize更加面向对象化

使用: Lock lock=new Reentranlock();

lock.lock(); lock.unlock();

读写锁的应用ReadWriteLock rwl=new ReentrantReadWriteLock();

缓存系统的实现-------

public class CacheDemo{

private Map cache=new HashMap();

private ReadWriteLock rwl=new ReentrantReadWriteLock();

public Object getData(String key){

rwl.readLock().lock(); //读之间可以不挂锁,但是怕是内存中没值,就得读数据库然后往缓存中写数据,所以挂上

Object value= null;

try{

value=cache.get(key);

if(value==null){

rwl.readLock().unlock();//如果没有数据就得进行写操作,就得将读解锁,开启写锁

rwl.writeLock().lock();

try{

if(value==null){//多个线程都走到rml.writeLock().lock()时,一个线程写入成功之后,则此时后面线程再到这一步时的判断缓存中是否有数据

value="aaa";

}

}

finally{

rwl.writeLock().lock();

}

rwl.readLock().lock();

}

}

finally{

rwl.readLock().unlock();

}

return value;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。