java
文章平均质量分 69
佳亮
这个作者很懒,什么都没留下…
展开
-
使用阻塞队列实现并发数据安全
最近一段时间在学习golang,golang的一个亮点,就是并发编程。在并发编程中,虽然也支持显式的对并发代码进行加锁(这一点看来和java并无太大区别)。但go推荐使用channel进行线程间的通信,channel是一个线程安全的阻塞队列,使用channel,可以实现多线程(协程)之间的数据一致性。在java中,多线程实现数据一致性,一般会使用 synchronized或者volatile或者Lock,那么能不能使用java中的阻塞队列来保证数据的并发安全呢?下面是一段使用多线程求和的代码,使用s原创 2020-11-20 20:02:57 · 413 阅读 · 0 评论 -
并发工具类:CountDownLatch,Semaphore,CyclicBarrier,Exchanger简单使用
public class ConcurrentTest { private static int THREAD_COUNT=10; private static ExecutorService threadPool=Executors.newFixedThreadPool(THREAD_COUNT); public static void main(String[] args) { countDownLatchTest(); } /** * 1,CountDownLatch允.原创 2020-06-13 11:30:03 · 162 阅读 · 0 评论 -
ReentrantLock简单介绍和使用ReentrantLock实现生产者消费者模式
/** * 1,ReentrantLock和synchronized都是可重入锁,Reentrant的本意就是“可重入的”。可重入锁顾名思义,就是在拥有锁的情况下可以调用其它需要本锁的方法或者代码块 * (同一个锁对象) *,2,synchronized只能实现非公平锁,ReentrantLock可以实现公平锁和非公平锁。公平锁或者非公平锁,顾名思义就是线程获取锁的顺序是否和加锁的顺序一致。ReentrantLock * 默认的构造方法创建的是非公平锁,ReentrantLock(true)创建..原创 2020-05-20 18:34:23 · 336 阅读 · 0 评论 -
使用BlockingQueue实现生产者消费者模式
package ProducerAndConsumer;import java.util.Iterator;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/...原创 2020-04-25 21:45:44 · 631 阅读 · 0 评论 -
使用wait和notify实现生产者消费者模式
package ProducerAndConsumer;import java.util.ArrayList;import java.util.List;/** * 1,线程中的wait,notifyAll和notify方法,必须是同一个锁对象才有意义。java的每个对象,维持两个队列,一个是线程就绪队列,一个是 * 线程阻塞队列。 * 2,调用对象的wait方法,则该线程被置入...原创 2020-04-25 14:08:29 · 496 阅读 · 1 评论 -
java多线程之线程池
package Thread;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.SynchronousQueue...原创 2020-04-07 20:39:41 · 177 阅读 · 0 评论 -
Java多线程之Callable、Future、FutureTask
package Thread;import java.util.Scanner;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future...原创 2020-04-07 20:37:13 · 183 阅读 · 0 评论 -
java8中的lambda表达式和stream流
1.lambda表达式lambda表达式是为了简化编程而生。在java中,一些很常见的操作总是包含一些“静态”代码,这里的静态值得是:无论我们在该操作中实现什么逻辑,这些代码必须得有而且形式也一样。比如使用匿名内部类的java线程,按钮的点击事件等。lambda表达式就是要替代只有一个抽象方法的匿名内部类,让代码变得更简洁。因为这些“静态”代码形式是固定的,所以编译器能够自动推断出来,...原创 2019-04-13 23:30:31 · 464 阅读 · 0 评论 -
solr环境搭建以及添加文档和查询文档
1.solr的定义Solr是一个高性能,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。文档通过Http利用XML 加到一个搜索集合中查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结...原创 2019-03-28 13:45:31 · 819 阅读 · 0 评论 -
lucene实现简单的全文检索
1.Lucene实现全文检索的流程由图可以看出,Lucene实现的全文检索核心就是索引库。索引就是为了快速查找而存在的,比如字典中的索引,关系型数据库中的索引。Lucene的使用大概分为两个步骤:获取文档,分析整理,写入索引库,索引库的存储位置可以自定义 从索引库中查询2.代码/** * lucene索引管理器 */public class IndexManager...原创 2019-03-22 17:16:21 · 998 阅读 · 0 评论 -
java 网络编程
1. 网络模型:OSI参考模型:(应用层,表示层,会话层,传输层,网络层,数据链路层,物理层)TCP/IP参考模型:(应用层,传输层,网际层,主机至网络层)2. 网络通讯要素IP地址本地回环地址:127.0.0.1,主机名:localhost端口可用端口:0~65535,其中0~1024是系统使用或者保留端口。3. Java网络编程常见对象TCP,UDP,Socket,ServerSocket原创 2017-04-21 10:22:56 · 411 阅读 · 0 评论 -
Java之IO流(二)
1. 对象的持久化:对象流对象的持久化对应的两个流是ObjectOutputStream和ObjectInputStream。持久化的对象必须实现Serializable,并且最好指定一个UID。创建需要持久化对象对应的类代码:/** 对象流,序列流,字符编码,乱码原创 2017-04-20 09:48:03 · 288 阅读 · 0 评论 -
java之IO流(一)
**IO流java中的IO流按照数据类型分为两种:字节流(用得最多)和字符流(多用于处理文档)。 IO流按流向分为:输入流,输出流。**字节流的抽象基类:InputStream,OutputStream 字符流的抽象基类:Reader,Writer1.字符流Writer和Reader1.1在硬盘上创建一个文件并且写入文字数据 static void createFileAndWrite()原创 2017-04-20 09:45:14 · 564 阅读 · 0 评论 -
java 集合类
java 集合类ArrayList,LinkedList,Vector,HashSet,TreeSet,HashMap,TreeMap,HashTableIterator Comparable,compareTo(),Comparator泛型,泛型限定。原创 2017-04-14 16:23:24 · 478 阅读 · 0 评论 -
交换两个整型变量的两种方式
交换两个整型变量的方式,我们一般都会借助一个临时变量来交换。在这里,不用临时变量,直接交换连个整型变量的值。方法一:int a=3,int b=8;//交换a和b的值n=n+m;m=n-m;n=n-m; //这种方法比较容易造成溢出,如果n和m都很大的话。方法二: int n=3; int m=8; n=n^m; m=n^m;原创 2017-03-25 22:58:26 · 846 阅读 · 0 评论 -
java之匿名内部类中的多态
接口,抽象类以匿名内部类实现多态原创 2017-04-01 17:36:34 · 2614 阅读 · 2 评论 -
java中的死锁
java 多线程 死锁 Thread Runnable原创 2017-04-08 22:51:24 · 389 阅读 · 0 评论