202010-01 Java线程状态变换过程代码解析 线程状态NEW:刚创建未启动的线程RUNNABLE:正在执行状态BLOCKED:处于阻塞状态的线程WAITING:正在等待另一个线程执行特定动作的线程TIMED_WAITING:等待另一个线程执行时间到达指定时间TERMINATED:线程退出执行publicclassTestState{publicstaticvoidmain(String[]args){Threadthread=newThread(()->{for(inti=0;i<5;i++){try{Thread.sleep(1000);}catch(... 继续阅读 >
202010-01 Java访问修饰符原理及代码解析 一、概述访问等级比较:public>protected>default>private无论是方法还是成员变量,这四种访问权限修饰符作用都一样public:不管包外包内,所有类(子类+非子类)均可使用protected包内:所有类可使用包外:子类可使用,非子类不可使用default包内:所有类可使用包外:所有类不可使用private:仅本类可使用二、示例代码Test包内的父类PermissionpublicclassPermission{privatein... 继续阅读 >
202010-01 Java实现简易生产者消费者模型过程解析 一、概述一共两个线程,一个线程生产产品,一个线程消费产品,使用同步代码块方法,同步两个线程。当产品没有时,通知生产者生产,生产者生产后,通知消费者消费,并等待消费者消费完。需要注意的是,有可能出现,停止生产产品后,消费者还没未来得及消费生产者生产的最后一个产品,就结束消费,导致最后一个产品没有被消费。本例使用synchronize以及wait()、notify()实现简易版的线程者消费者模型。二、测试用例这里的产品用笔来... 继续阅读 >
202010-01 Java实现线程同步方法及原理详解 一、概述无论是什么语言,在多线程编程中,常常会遇到多个线同时操作程某个变量(读/写),如果读/写不同步,则会造成不符合预期的结果。例如:线程A和线程B并发运行,都操作变量X,若线程A对变量X进行赋上一个新值,线程B仍然使用变量X之前的值,很明显线程B使用的X不是我们想要的值了。Java提供了三种机制,解决上述问题,实现线程同步:同步代码块synchronized(锁对象){//这里添加受保护的数据操作}同步方法静态同步方法:synch... 继续阅读 >
202010-01 三种Java打印PDF文档的实例代码 以下内容归纳了通过Java程序打印PDF文档时的3种情形。即:1静默打印2显示打印对话框打印3打印PDF时自定义纸张大小使用工具:Spire.PDFforJavaJar文件获取及导入:方法1:下载jar包。下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar导入java程序。方法2:可通过maven库导入。参考导入方法。Java代码示例【示例1】静默打印即通过使用默认打印机直接打印PDF文档。打印时,我们可以设置打印份数,设置纸张打印页边距等。import... 继续阅读 >
202010-01 Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法。分享给大家供大家参考,具体如下:什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能... 继续阅读 >
202010-01 Java向Runnable线程传递参数方法实例解析 javaRunnable接口:是一个接口,它里面只有一个run()方法,没有start()方法,继2113承Runnable并实现这个方法就可以实现多线程了,但是5261这个run()方法不能自4102己调用,必须由系统来调用。向线程中传递数据的三种方法:一、通过构造函数传递参数publicclassMyThread1extendsThread{privateStringname;publicMyThread1(Stringname){this.name=name;}publicvoidrun(){System.out.println("hell... 继续阅读 >
202010-01 Java多线程实现四种方式原理详解 1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通过Callable和FutureTask创建线程4.通过线程池创建线程前面两种可以归结为一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void,所以没有办法返回结果后面两种可以归结成一类:有返回值,通过Callable接口,就要实现call方法,这个方法的返回值是Object,所以返回的结果可以放在Ob... 继续阅读 >
202010-01 Java多线程Runable售票系统实现过程解析 一、无等待,直接出票【虽然解决了不会冲票问题,但显然不符合实际生活】:packagecom.thread.sale;publicclassSale{publicstaticvoidmain(String[]args){//悟,那么设计爬虫的时候,下载的资源唯一,使用多线程下载SaleTicketst=newSaleTickets();//关键在这里,只创建一个对象,而后交给线程去执行这个任务,达到目的Threadthread1=newThread(t);Threadthread2=newThread(t);Threadthre... 继续阅读 >
202010-01 快速了解JAVA垃圾回收机制 说到垃圾回收(GarbageCollection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集器?下面我们就来逐一探讨这些问题。... 继续阅读 >
202010-01 Java虚拟机执行引擎知识总结 执行引擎也只有几个概念,JVM方法调用和执行的基础数据结构是栈帧,是内存区域中虚拟机栈中的栈元素,每一个方法的执行就对应着一个栈帧在虚拟机栈中出栈入栈的过程.栈帧:则是包含有局部变量表,操作数栈,动态连接,方法返回地址,附加信息.1局部变量表:存储单位是slot,一个slot占据32位,对于64位的数据类型,则是分配连续两个slot空间.而对于一个非静态方法而言,有一个隐藏参数,为this,而在局部变量表中的变量存储顺... 继续阅读 >
202010-01 java单例模式实现的方法 1.最基本的单例模式/***@authorLearnAndGet*@time2018年11月13日*最基本的单例模式*/publicclassSingletonV1{privatestaticSingletonV1instance=newSingletonV1();;//构造函数私有化privateSingletonV1(){}publicstaticSingletonV1getInstance(){returninstance;}}importorg.junit.Test;publicclassSingletonTest{@Testpublicvoidtest01()throwsException{SingletonV1s1=Single... 继续阅读 >
202010-01 JAVA导出CSV文件实例教程 以前导出总是用POI导出为Excel文件,后来当我了解到CSV以后,我发现速度飞快。如果导出的数据不要求格式、样式、公式等等,建议最好导成CSV文件,因为真的很快。虽然我们可以用Java再带的文件相关的类去操作以生成一个CSV文件,但事实上有好多第三方类库也提供了类似的功能。这里我们使用apache提供的commons-csv组件CommonsCSV文档在这里http://commons.apache.org/http://commons.apache.org/proper/commons-csv/http://commons... 继续阅读 >
202010-01 JAVA导出CSV文件实例教程 以前导出总是用POI导出为Excel文件,后来当我了解到CSV以后,我发现速度飞快。如果导出的数据不要求格式、样式、公式等等,建议最好导成CSV文件,因为真的很快。虽然我们可以用Java再带的文件相关的类去操作以生成一个CSV文件,但事实上有好多第三方类库也提供了类似的功能。这里我们使用apache提供的commons-csv组件CommonsCSV文档在这里http://commons.apache.org/http://commons.apache.org/proper/commons-csv/http://commons... 继续阅读 >
202010-01 详解Java内存溢出的几种情况 JVM(Java虚拟机)是一个抽象的计算模型。就如同一台真实的机器,它有自己的指令集和执行引擎,可以在运行时操控内存区域。目的是为构建在其上运行的应用程序提供一个运行环境。JVM可以解读指令代码并与底层进行交互:包括操作系统平台和执行指令并管理资源的硬件体系结构。1.前言JVM提供的内存管理机制和自动垃圾回收极大的解放了用户对于内存的管理,大部分情况下不会出现内存泄漏和内存溢出问题。但是基本不会出现并不等于不会... 继续阅读 >
202010-01 微信小程序订阅消息(java后端实现)开发 订阅消息说明订阅消息是微信近期新出的一个能力,用来代替原有的模板消息(原有的模板消息即将下线)订阅消息的功能较模板消息有所提升,"7天"的限制取消,同时有"一次性"和"永久"订阅.(功能上是这样说的,但是实际开发时发现"永久"订阅还是对小程序的服务类目有要求的,客户的小程序只支持"一次性"订阅)官方通道:小程序前端:点击进入小程序服务端:点击进入开发思路用户在小程序内触发按钮或进行支付操作时前端调用订阅消息授权框,默认一... 继续阅读 >