Java
樊先知樊先知
github:https://github.com/xianzhixianzhixian
展开
-
Java多线程问题--线程运行时出现异常的解决办法
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git线程运行时出现问题的几种解决办法1、为特定线程指定一个异常处理器thread.setUncaughtException(new UncaughtExceptionHandler(){ @Override...原创 2019-03-05 22:59:58 · 2923 阅读 · 0 评论 -
Java多线程问题--PipedReader和PipedWriter实现线程间通信
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git相关知识讲解1、Java中提供了很多输入/输出流Stream,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输入管道,另一个线程从输入管道中读取数据。通过使用管道,...原创 2019-01-02 21:15:21 · 441 阅读 · 0 评论 -
Java多线程问题--PipedInputStream和PipedOutputStream实现线程间通信
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git相关知识讲解1、Java中提供了很多输入/输出流Stream,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输入管道,另一个线程从输入管道中读取数据。通过使用管道,...原创 2019-01-02 21:03:30 · 1294 阅读 · 0 评论 -
Java多线程问题--wait/notifyAll多生产者和多消费者
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git相关知识讲解1、wait()方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码处停止执行,知道接到通知或被中断位置。在wait()方法调用前,线程必须获得该对象的对象级...原创 2019-01-02 20:38:41 · 401 阅读 · 0 评论 -
Java多线程问题--锁对象的改变
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git这个问题很有趣,有一段时间让我百思不得其解,后来和小伙伴讨论最后弄明白了;对这个感兴趣的小伙伴可以思考思考哈,注意推敲红字的含义。摘录书里面的一段话:在将任何数据类型作为同步锁时,需要注意的是,是否有多个线程同时持有锁对...原创 2018-12-24 22:05:51 · 517 阅读 · 0 评论 -
Java多线程问题--内置类和静态内置类的应用
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git书中前几章的自然看得懂为什么结果是这样,没看的也可以看看本文的分析,希望能够有所帮助第一个示例第一个示例中是内置静态类的中的两个方法使用不同的对象锁,结果可想而知,两个方法是异步运行的。OutClass.ja...原创 2018-12-24 20:44:51 · 282 阅读 · 0 评论 -
Java中内置类和静态内置类的使用
纯手打,转载请附上本文网址!!!Java中内置类和静态内置类存在应用,编写了一个示例以供参考,本例中的所有类都是在同一个包中的。代码地址:https://github.com/xianzhixianzhixian/thread.git内置类的实例化方法:外置类类名.内置类类名 innerClass = 外置类对象名.new 内置类类名();内置静态类实例化方法:外置类类名...原创 2018-12-24 20:32:11 · 1021 阅读 · 2 评论 -
Java多线程问题--数据类型String的常量池特性
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git什么是常量池这里单单只说Java常量池,Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)...原创 2018-12-18 20:42:38 · 449 阅读 · 0 评论 -
Java多线程问题--静态同步synchronized方法和synchronized(class)代码块
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git1、关键字synchronized还可以用在static静态方法上,如果这样写是对当前的*.java文件对应的Class类进行持锁。2、同步synchronized(Class)代码块的作用和sunchronized s...原创 2018-12-18 20:05:48 · 928 阅读 · 1 评论 -
Java多线程问题--suspend()和resume()独占问题
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git为什么线程暂停不用suspend()和resume()了?因为这两个方法有独占和不同步的问题,先说说“独占”1、线程内部调用suspend()方法却未调用resume()导致的对象锁独占情况,原因在程序备注里Sync...原创 2018-12-11 20:32:19 · 542 阅读 · 0 评论 -
Java多线程问题--synchronized锁重入
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git关键字synchronized拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到一个对象锁后,再次请求此对象的锁时是可以再次得到该对象的锁的。这也证明在一个synchronized方法/块的内部调用本类...原创 2018-12-17 20:19:18 · 211 阅读 · 0 评论 -
Java多线程问题--方法getHoldCount()、getQueueLength()和getWaitQueueLength()的用法和区别
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git方法getHoldCount()、getQueueLength()和getWaitQueueLength()用法和区别1、lock.getHoldCount()作用是查询当前线程保持锁定的个数,也就是调用lock()...原创 2019-01-17 22:47:45 · 1221 阅读 · 0 评论 -
Java多线程问题--join()的使用以及方法join()后面的代码提前运行的原因
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.gitjoin()方法的使用1、join()方法的用途是使所属的线程对象x正常执行run()方法中的任务,而使当前线程z进行无限期的阻塞,等待线程x销毁后再继续执行线程z后面的代码。2、join()和synchroni...原创 2019-01-08 19:44:49 · 2908 阅读 · 3 评论 -
Java多线程问题--schedule函数和scheduleAtFixedRate的用法和区别
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.gitschedule函数和scheduleAtFixedRate的用法和区别1、schedule(TimerTask task, Date time)的作用在指定的时间执行任务,如果指定时间早于当前时间则立即执行任务...原创 2019-02-14 23:05:39 · 2317 阅读 · 4 评论 -
Java多线程问题--ReentrantLock和Condition实现多生产者/多消费者模式以及唤醒特定线程
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.gitReentrantLock和Condition基本用法1、ReentrantLock类中的lock()和unlock()方法要成对使用,lock()方法使当前线程获得对象锁,unlock()方法使当前线程释放对象锁。...原创 2019-01-14 22:09:07 · 617 阅读 · 0 评论 -
Java多线程问题--使用ReentrantLock类和Condition类实现多线程顺序执行
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git原理其实很简单:使用不同的Condition实例即可,和这篇文章里的唤醒特定线程有异曲同工之处https://blog.csdn.net/XIANZHIXIANZHIXIAN/article/details/864844...原创 2019-01-24 22:42:57 · 432 阅读 · 0 评论 -
Java多线程问题--ReentrantReardWriteLock类的用法
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.gitReentrantReardWriteLock类的优势和用法1、ReentrantLock类中提供了lock.lock()和lock.unlock()来实现获得对象锁和释放对象锁。但是我们可以考虑这样一个问题,当多个...原创 2019-01-24 22:36:06 · 200 阅读 · 0 评论 -
Java多线程问题--方法awaitUntil(Date deadline)的用法
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git方法awaitUntil(Date deadline)的用法1、方法condition.awaitUntil(Date deadline)的使用:condition.awaitUntil(Date deadline...原创 2019-01-24 22:14:30 · 875 阅读 · 0 评论 -
Java多线程问题--方法await()和awaitUninterruptibly()的用法和区别
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git方法await()和awaitUninterruptibly()的用法和区别方法condition.awaitUninterruptibly()的使用线程在调用condition.await()后处于await状态...原创 2019-01-24 22:04:27 · 5141 阅读 · 1 评论 -
Java多线程问题--ThreadLocal和InheritableThreadLocal
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.gitThreadLocal和InheritableThreadLocal基本用法1、ThreadLocal和InheritableThreadLocal都是为了解决每个线程绑定自己的值,其中可以存放每个线程的私有数据,存...原创 2019-01-14 21:32:39 · 307 阅读 · 2 评论 -
Java多线程问题--方法lock.lockInterruptibly()、tryLock()和tryLock(long timeout,TimeUint uint)的用法和区别
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git方法lock.lockInterruptibly()、tryLock()和tryLock(long timeout,TimeUint uint)的用法和区别1、lock.lockInterruptibly()的作用是...原创 2019-01-24 21:37:09 · 2452 阅读 · 2 评论 -
Java多线程问题--方法isFair()、isHeldByCurrentThread()和isLocked()的用法和区别
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git方法isFair()、isHeldByCurrentThread()和isLocked()的用法和区别1、lock.isFair()方法用来判断lock锁是公平锁还是非公平锁。公平锁是指,线程获得锁的顺序是按其等待锁...原创 2019-01-24 21:02:33 · 11638 阅读 · 4 评论 -
Java多线程问题--方法hasQueueThread(Thread thread)、hasQueueThreads()和hasWaiters(Condition condition)的用法和区别
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git方法hasQueueThread()、hasQueueThreads()和hasWaiters(Condition condition)的用法和区别1、方法lock.hasQueueThread(Thread thr...原创 2019-01-24 20:37:25 · 778 阅读 · 0 评论 -
Java多线程问题--当i++遇上System.out.println()
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git首先我们看看System.out.println()的源码,输出x的时候是由synchronized代码块包裹着的,那么System.out.println(i++)是否就是线程安全的呢?然而并不是的,下面来说明原因...原创 2018-12-10 21:57:13 · 1303 阅读 · 0 评论 -
Java多线程问题--停止线程的方法:异常法
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git停止线程的方法有以下几种1、异常法:通过抛出异常来跳出正在运行的线程,在catch块中可以将异常向上层抛出,线程的停止事件得以传播。2、沉睡法:通过Thread.sleep()一个很长的时间,让线程抛出java.la...原创 2018-12-10 21:32:44 · 549 阅读 · 0 评论 -
Java多线程问题--wait()和notify()
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git介绍wait()和notify()的使用以及注意事项1、wait()方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码处停止执行,知道接到通知或被中断位置。在wait(...原创 2018-12-26 23:42:16 · 635 阅读 · 0 评论 -
Java递归解析任意层的Json数据,获取所有的key和value,
纯手打,转载务请附上本文网址!!!有需要的可以自己下载看看,github代码:https://github.com/xianzhixianzhixian/JsonDemo.git实习,需要做到几个功能:1、从内容的Json字符串中获取所有的key和value2、把未知的Json字符传转化为LinkedList<LinkedList<String>>类型的数据...原创 2018-02-28 14:54:44 · 20395 阅读 · 1 评论 -
利用redis实现定长的线程队列
纯手打,转载务请附上本文网址!!!Redis -- 首先就不做简介啦,直接上代码和功能实习需要做到一个功能:利用Redis控制线程个数,包括人工起的线程和自动运行的线程;公司代码不能上,就上自己写的一个小例子吧,附上github地址:https://github.com/xianzhixianzhixian/RedisDemo.git首先我们有一个长度不定的队列takslist用于接收所有的任务,...原创 2018-01-23 12:01:12 · 4976 阅读 · 0 评论 -
redis list基本操作,redis工具类
纯手打,转载务请附上本文网址!!!2018.3.12:更新代码,由于原工具类中每次操作都需要连接和断开Redis,很影响效率;所以改进工具类,使用JedisPool来获取Redis连接并增加新的功能,原来的代码不删除留作对比!本文中使用的是Redis中的list数据结构,其它结构请参考官方文档package com.yufeng.redis.util;import org.apache.com...原创 2018-03-12 16:45:38 · 1760 阅读 · 0 评论 -
Jsoup解析html界面
纯手打,转载务请附上本文网址!!!什么是Jsoup,Java代码解析html页面的工具;先把html页面解析为字符串,再用Jsoup解析即可用这个小东西可以实现Java爬虫的哦,有意思吧~附上github地址:https://github.com/xianzhixianzhixian/RedisDemo.git首先我要分析的是这样一个页面:获得红框中的几个数字,而红框...原创 2018-01-15 18:25:38 · 320 阅读 · 0 评论 -
JsonPath的使用
1. 介绍类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot–notation”和“bracket–notation”格式,例如$.store.book[0].title、$[‘store’][‘book’][0][‘title’]2. 操作符符号描述$转载 2018-01-03 09:46:29 · 3593 阅读 · 0 评论 -
Jooq根据数据库表自动生成代码教程及配置
纯手打,转载请附上本文网址!!!上个月实习,框架用的SpringBoot + Jooq,什么Jooq是什么?其实我也不知道,后来看了一下官网的文档和网上的资料,发现这个Jooq确实挺有意思的,尤其是在程序的语句这块,可以参考我的另一篇博客:但是我要的功能是根据数据库的内容生成pojo的代码呀,这可把我难坏了,但是功夫不负有心人还是做出来了;废话不多直接上教程,附上github源码示例地址:原创 2017-12-25 13:28:02 · 3911 阅读 · 0 评论 -
Jooq对数据库的增删改查教程
纯手打,转载请附上本文网址!!!最后推荐大家看看这篇文章,挺不错的https://www.jianshu.com/p/46164f9ba53c原创 2017-12-25 16:37:36 · 5001 阅读 · 0 评论 -
java数据类型及大小
Int: 4 字节Short: 2字节Long: 8字节Byte: 1字节Character: 2字节Float: 4字节Double: 8字节Boolean:系统没有提供Size方法;[java] view plain copypublic class Calcsizof { /**转载 2016-10-07 15:43:06 · 389 阅读 · 0 评论 -
Java多线程问题--死锁示例
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git首先看看Java中线程死锁的原因多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放,而该资源又被其他线程锁定,从而导致每一个线程都得等其它线程释放其锁定的资源,造成了所有线程都无法正常结束。死锁产生的四个...原创 2018-12-20 22:14:58 · 222 阅读 · 0 评论 -
Java多线程问题--synchronized方法锁
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git结论:当一个类的同一个实例被多个线程使用时,这些线程持有的是这个实例的对象锁。一个线程在执行该类中synchronized修饰的方法时,其它线程可以调用该类中非synchronized修饰的方法;如果其它线程要调用该类中sy...原创 2018-12-13 22:32:10 · 218 阅读 · 0 评论 -
Java多线程问题--suspend()和resume()不同步问题
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git使用suspend()和resume()有可能会导致不同步问题,值得注意!MyObject.javapackage thread.suspend.resume.nosamevalue;/** * 检验susp...原创 2018-12-12 20:30:11 · 346 阅读 · 0 评论 -
Java多线程问题--线程对象以构造参数的方式传递给Thread对象进行start()启动时的差异
本文内容部分引自《Java多线程编程核心技术》,感谢作者!!!代码地址:https://github.com/xianzhixianzhixian/thread.git前几天看书,有很多疑惑,于是把自己的感悟记录下来。那么,线程对象以构造参数的方式传递给Thread对象进行start()启动和直接启动时的差异是什么呢?划重点了,先看对比图,第一张是直接启动时的结果,第二张是作为参数时的...原创 2018-11-06 20:03:51 · 1358 阅读 · 0 评论 -
IDEA 导入maven项目在Select Maven projects to import界面无选项
解决方案:第一种是项目结构没有问题的,勾上这两个选项就可以了第二种是项目缺少配置文件有问题的(后面配置文件自己添加吧)按下列步骤操作:1、关闭IDEA2、然后删除项目文件夹下的.idea文件夹3、重新用IDEA工具打开项目...原创 2017-11-24 23:59:12 · 22915 阅读 · 7 评论 -
Sprnig事务和Service函数名关系,org.springframework.transaction.interceptor.TransactionInterceptor.invoke解决
纯手打,转载务请附上本文网址!!!做自己开发的SSM项目的时候某天打开eclipse的时候突然就显示有org.springframework.transaction.interceptor.TransactionInterceptor.invoke错误,很奇怪不知道是为什么@Service标签和事务都已经配置完毕没什么问题了Class dependency error 'WResponse' oc...原创 2018-05-05 00:00:10 · 992 阅读 · 0 评论