
Java相关学习笔记
文章平均质量分 90
该教程为本人学习JAVA多线程学习笔记,为个人理解记录使用,更便于其他人阅读和学习。代码详尽,详细解释了生产者消费者经典多线程模型,并完成了一份升级版生产者消费者案例。
Charles Ray
现就职于某半导体公司。Software Programmer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《java编程思想》读书笔记
前言看了这本书两遍,第一遍是很大略的看了一下,里面的代码都没怎么仔细研究,粗略的看。而第二遍属于比较细致的看了,里面的代码和练习题也都研究和敲了敲。 首先这本书我觉得适合有一些项目经验然后来学习思想的来看,因为书里不会具体去将语法,所以不适合零基础入门书。而且觉得这本书确实有助于加强对java语言的理解,特别是运行机理。 以下是我对这本书的做的一些笔记,自己认为比较重要的点。当然因人而异。从泛型原创 2017-01-17 13:52:28 · 872 阅读 · 1 评论 -
Java运行期间内存分配详解
明确期间首先要明确的是我们讨论的各类型变量占用内存是指在运行期间所占系统内存,也就是你开启这个java程序后所占的内存。这点需要明确,因为你没有运行项目时,他就是一个java文件,静态的,他跟word文档一样占用几kb的字符内存这个就跟你代码长短有关系跟他里面写的什么是没关系的。所以我觉得有些文章讨论的是在编译期占内存,我觉得是没有理解内存的。因为编译期间,不过是把.java文件编译成.cla...原创 2019-05-21 16:18:05 · 1338 阅读 · 0 评论 -
什么是Spring依赖注入
参考文档https://segmentfault.com/a/1190000018972356什么是Spring的依赖注入?有什么好处依赖注入:是指程序运行过程中,如果需要创建一个对象,无须再代码中new创建,而是依赖外部的注入。spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对pojo之间依赖关系的管理new对象:类的头部进行实例化对象和依赖注入一个效果,这个时候该对...原创 2019-11-14 12:05:45 · 5866 阅读 · 1 评论 -
Java网络编程(五) —— HTTP服务端与客户端介绍
文章目录概述浏览器和服务器运行原理URL网络架构C/S:B/S:概述服务器开启tomcat服务器:他可以存储我们写好的webapp资源,然后tomcat相当于容器,并提供这个服务。访问http://192.168.1.11 web服务默认是80端口比如我配置了DNS列表,则我就可以访问http://www.djlf.com我可以把他配置成我想要的ip地址访问我们自己创建的服务器最好指定...原创 2019-07-20 20:10:09 · 1072 阅读 · 0 评论 -
Java网络编程(四) —— TCP实现数据传输
文章目录UDP和TCP进行java编程区别接口使用开启顺序数据形式TCP的通信流程与三次握手三次握手TCP连接客户端与服务端实现服务端代码客户端代码客户端发送给服务器并读取反馈数据总结UDP和TCP进行java编程区别接口使用udp套接字使用DatagramSocket实现发送和接收。而TCP中用socket套接字实现发送,用SeverSocket来接收,在TCP中叫客户端与服务端。开启...原创 2019-07-20 16:52:34 · 1175 阅读 · 0 评论 -
Java网络编程(三) —— UDP实现数据发送与接收
文章目录概述1. udp发送接收步骤发送端接收端2. udp使用多线程发送和接收发送端代码接收端代码测试开启线程服务总结概述UDP编程使用DatagramPacket包1. udp发送接收步骤发送端建立udpsocket服务将数据封装到数据包使用socket发送数据包关闭资源import java.io.BufferedReader;import java.io.IOExc...原创 2019-06-23 17:42:44 · 3419 阅读 · 0 评论 -
Java网络编程(二) —— 网络IO模型及同步异步、阻塞非阻塞最通俗讲解
文章目录1. 烧水举例同步和异步:阻塞和非阻塞:2. Unix网络IO模型1. 阻塞IO模型:2. 非阻塞IO模型I/O复用模型信号驱动式I/O异步IO模型参考文章https://www.zhihu.com/question/19732473https://juejin.im/entry/5a72d7f36fb9a01ca8724e361. 烧水举例用生活中最常见的煮开水举例。出场人物:...原创 2019-06-22 17:23:39 · 884 阅读 · 0 评论 -
Java网络编程(一) —— 基础知识
文章目录1. 数字标识2. 网络模型3. TCP和UDP比较UDPTCP4. Socket(套接字)5. java获取地址实例参考文章:简单理解SocketJava网络编程,菜鸟1. 数字标识不同主机的进程之间通过网络通信。每个进程有一个端口号。所以网络通信必要条件:IP地址,进程端口号(逻辑端口)。通信规则,叫协议。所有通信需要遵循通用协议来进行通信。Internet网络传输协议...原创 2019-06-20 18:19:33 · 1000 阅读 · 0 评论 -
java并发编程系列 ---(二)java 内存模型解析(JMM)
文章目录java 内存模型概述工作内存数据和主内存数据硬件内存架构与Java内存模型Java线程与硬件处理器JMM(java内存模型)存在的必要性Java内存模型三大特性原子性可见性有序性JMM提供的解决方案举例说明:方法一:使用volatile关键字方法二: synchronized方法三:Locks另一个实例java 内存模型本篇文章主要参考来自:理解Java内存区域与Java内存模型...原创 2019-06-06 04:23:33 · 584 阅读 · 0 评论 -
java并发编程系列 ---(一)并发和并行
本学习笔记由观看油管上的一个印度人做的java并发的教程而整理的笔记,由于没有字幕,老印的口音听起来确实挺费劲。YouTube java并发链接并发和并行...原创 2019-05-28 20:57:10 · 653 阅读 · 0 评论 -
java多线程(一)多线程创建(三种)与线程状态
文章目录多线程概述多线程的创建方法一:继承Thread类线程的状态线程的名称获取线程名称设置线程名称方法二:实现Runnable 接口实现Runnable创建线程和继承Thread类区别多线程安全问题java提供的解决方法:同步代码块多线程概述进程:是一个执行程序,比如迅雷应用程序多线程:是进程中的执行单元,一个进程中可以有多个线程一起执行,比如迅雷开启多线程下载多个文件。java从mai...原创 2019-06-07 00:18:06 · 978 阅读 · 0 评论 -
java多线程(二)多线程同步与死锁
文章目录1. 同步概述同步的前提:银行存钱案例:2. 同步代码块3. 同步函数静态同步方法使用的锁是该方法所在类的字节码文件对象,也就是和下面方法块相同面试题:单例设计模式安全问题4. 死锁避免死锁1. 锁的顺序2. 超时放弃1. 同步概述同步的前提:必须两个以上的线程多个线程使用同一个锁操作共享变量同步的好处:解决了多线程安全问题。弊端:每次都需要判断锁,会消耗资源银行存钱案...原创 2019-06-07 18:05:09 · 599 阅读 · 0 评论 -
java多线程(三)多线程通信 —— synchronized + wait + notifyAll等待唤醒机制
文章目录1. java线程间直接传值java也提供不同线程间传值2. 等待、唤醒机制synchronized + wait + notify如何使用共享对象:生产者消费者模型:例子说明生产消费者模型:安全问题生产消费者模型:加同步锁生产消费者模型:等待唤醒机制小结多线程间通信多线程通信其实包含两方面,一个是线程间通知,一个线程告诉另一个线程是否结束。另一个是线程间传值。1. java线程间直...原创 2019-06-09 04:22:04 · 801 阅读 · 0 评论 -
java多线程(四)多线程通信 —— Lock +Condition实现生产者模型
文章目录1. 回顾与更新JDK5锁方法升级2. 生产者消费者模型:使用Lock和Condition来实现1. 回顾与更新本篇文章着重参考:java多线程(3):Lock接口和Condition监视器接口使用详解 写的非常简洁易懂,我把代码和注释稍作修改,个人觉得理解起来更好一些,但是大部分使用原文语句,跟人感觉已经很易懂了。上一篇文章使用的synchronized关键字来保证同步时,每个...原创 2019-06-09 07:26:42 · 588 阅读 · 0 评论 -
java多线程(五)多线程通信 —— 生产消费者模型:多资源同时生产版本
之前的案例相当于生产一个面包必须对应消费一个面包,而更贴近实际情况的是:一个面包加工厂,有多个线程生产面包,而消费面包不会生成一个就消费一个,有多个线程来消费面包。生产者检测到没有面包就生产不一定生产多少个,而消费者检测到有面包就随时消费。并非生产一个就消费一个。这是我觉得更符合真实情况的案例,当然也可以添加更多限制条件,比如说,限制某个面包唯一消费啊。。等等。。但是现在我们仅根据上述...原创 2019-06-09 17:16:04 · 522 阅读 · 0 评论 -
java多线程(六)多线程的其他常用方法
文章目录停止线程守护线程,后台线程join()方法停止线程stop()已过时只有一种停止线程,就是等待run方法结束。开启多线程运行代码通常都是循环结构在run方法中。所以只要控制循环就可以让控制run方法也就是线程的生命。class StopThread implements Runnable { private boolean flag = true; @Overri...原创 2019-06-09 17:19:49 · 428 阅读 · 0 评论 -
java多线程(七)线程池 —— 创建线程池和(Callable + FutureTask)
文章目录导读1. 概述2. 具体步骤1. 创建线程池五种线程池:2. 创建任务(实现Callable带泛型)3. 开启任务4. 关闭线程池综合代码实例:实例1:(Callable + Futuretask)操控线程实例2:开启多个任务线程导读本篇文章介绍了如何创建线程池,和使用(Callable + FutureTask)获取线程信息1. 概述之前我们在使用多线程都是用Thread的sta...原创 2019-06-10 19:22:10 · 1815 阅读 · 0 评论 -
java多线程(八)线程池 —— CountDownLatch线程计数器
使用CountDownLatch线程计数器ThreadPoolExecutor/ExecutorService:线程池,使用线程池可以复用线程,降低频繁创建线程造成的性能消耗,同时对线程的创建、启动、停止、销毁等操作更简便。CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMap和B...原创 2019-06-11 02:51:28 · 2147 阅读 · 0 评论 -
java多线程(九)服务器处理并发客户端请求的方式
前提IO编程中,。Input Stream就是数据从外面(磁盘、网络)流进内存,Output Stream就是数据从内存流到外面去。对于浏览网页来说,浏览器和新浪服务器之间至少需要建立两根水管,才可以既能发数据,又能收数据。由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。举个例子来说,比如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01...原创 2019-07-20 16:41:57 · 3276 阅读 · 0 评论 -
java多线程 —— 面试题集合(最全集合)
文章目录导读1. 多线程基本概念多线程有什么用?线程、进程、协程的区别什么是多线程上下文切换?什么是线程安全2. java多线程创建创建线程的方式Runnable和Callable的区别Thread类中的start()和run()方法有什么区别?什么导致线程阻塞?3. 多线程同步和锁怎么检测一个线程是否持有对象监视器Condition?4. 线程池CyclicBarrier和CountDownLa...原创 2019-10-12 10:28:22 · 30133 阅读 · 5 评论