摘要: 在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。 ​ 采用synchronized修饰符实现的同步机制叫做互斥 阅读全文
posted @ 2018-04-11 14:59 zailushang1996 阅读(474) 评论(0) 推荐(0) 编辑
摘要: Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势: ​ 1、可以避免由于Java的单继承特性而带来的局限; ​ 2、增强程序的健壮性,代码能够被 阅读全文
posted @ 2018-04-11 14:21 zailushang1996 阅读(237) 评论(0) 推荐(0) 编辑
摘要: volatile用处说明 ​ 在JDK1.2之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile "关键字" 的使用变得非常重要。 在当前的Java内存模型下, "线程" 可以把 "变量" 保存在本地内存 阅读全文
posted @ 2018-04-11 14:17 zailushang1996 阅读(502) 评论(0) 推荐(0) 编辑
摘要: 守护线程 Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ​ 用户线程即运行在前台的线程,而守护线程是运行在后台的线程。 守护线程作用是为其他前台线程的运行提供便利服务,而且仅在普通、非守护线程仍然运行时才需要,比如垃圾回收线程就是一个守护线程。当V 阅读全文
posted @ 2018-04-11 13:53 zailushang1996 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 挂起和恢复线程 ​ Thread 的API中包含两个被淘汰的方法,它们用于临时挂起和重启某个线程,这些方法已经被淘汰,因为它们是不安全的,不稳定的。如果在不合适的时候挂起线程(比如,锁定共享资源时),此时便可能会发生死锁条件——其他线程在等待该线程释放锁,但该线程却被挂起了,便会发生死锁。另外,在长 阅读全文
posted @ 2018-04-11 13:44 zailushang1996 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 【Java并发编程】之二:线程中断 使用interrupt()中断线程 ​ 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回。这里需要注意的是,如果只是单纯的调用interrupt()方法 阅读全文
posted @ 2018-04-11 13:40 zailushang1996 阅读(199) 评论(0) 推荐(0) 编辑
摘要: IO流:概述、字符流、缓冲区 一、IO流概述 概述: IO流简单来说就是Input和Output流,IO流主要是用来处理设备之间的数据传输,java对于数据的操作都是通过流实现,而java用于操作流的对象都在IO包中。 分类: 按操作数据分为:字节流和字符流。 如:Reader和InpurStrea 阅读全文
posted @ 2018-04-02 13:14 zailushang1996 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 多realm配置 public class MyRealm1 implements Realm { public String getName() { return "myrealm1"; } public boolean supports(AuthenticationToken token) { 阅读全文
posted @ 2018-03-27 22:40 zailushang1996 阅读(877) 评论(0) 推荐(0) 编辑
摘要: 理解OAuth 2.0 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。 一、应用场景 为了理解OAuth的适用场合,让我举一个假设 阅读全文
posted @ 2018-03-26 09:51 zailushang1996 阅读(122) 评论(0) 推荐(0) 编辑
摘要: Git总结 Git介绍 Git是分布式版本控制系统 集中式VS分布式,SVN VS Git 1. SVN和Git主要的区别在于历史版本维护的位置 2. Git本地仓库包含代码库还有历史库,在本地的环境开发就可以记录历史而SVN的历史库存在于中央仓库,每次对比与提交代码都必须连接到中央仓库才能进行。 阅读全文
posted @ 2018-03-24 13:09 zailushang1996 阅读(162) 评论(0) 推荐(0) 编辑