排序:
默认
按更新时间
按访问量

多线程八:一个线程连着调用start两次或多次会出现什么情况,为什么会出现IllegalThreadStateException异常

在说明之前大家先看一下start()方法的源码 public synchronized void start() { if (threadStatus != 0) throw new IllegalThreadStateException(); ...

2018-08-04 10:12:45

阅读数:555

评论数:0

多线程七:关键字synchronized和volatile比较

volatile关键字  关键字volatile主要使用的场合是在多个线程中可以感知实例变量被更改了,并且可以获得最新的值使用,也就是用多线程读取共享变量时可以获得最新值使用。  关键字volatile提示线程每次从共享内存中读取变量,而不是从私有内存中读取,这样就保证了同步数据的可见性。  关键...

2018-07-10 14:04:27

阅读数:70

评论数:0

多线程六:死锁例子与排查

死锁产生情况:双方互相持有对方的锁的情况死锁示例代码:public class DealThread implements Runnable { public String username; public Object lock1 = new Object(); public Object...

2018-07-10 14:02:54

阅读数:72

评论数:0

多线程五:synchronized同步代码块

使用synchronized的弊端A线程调用同步方法执行一个长时间的任务,那么B线程则必须等待比较长时间。synchronized同步代码块两个并发线程访问同一个对象object中synchronized(this)同步代码块时,一段时间内只能有一个线程被执行,另一个线程必须等待当前线程执行完这个...

2018-07-10 14:00:03

阅读数:71

评论数:0

多线程四:可重入锁

自己可以再次获取自己的内部锁。比如有1调线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。可重入锁也支持在父类继承的环境中。(即子类锁中调用了父类带锁函数) 普通可重入锁示例代码:public class Serv...

2018-07-10 13:57:48

阅读数:67

评论数:0

多线程三:脏读概念

在读取实例变量时,此值已经被其他线程更改过了,脏读一定会出现操作实例变量的情况下,这就是不同线程“争抢”实例变量的结果。

2018-07-10 13:54:39

阅读数:111

评论数:0

多线程二:停止线程方法

1.异常法:在想停止的地方,抛出个throw new InterruptedException();异常,出现异常锁自动释放。 2.在沉睡中停止:如果一个线程处于sleep状态时执行了interrupt方法后(即线程停止了)会出现异常停止 3.暴力停止:使用stop()方法直接就可以停止线程了,使...

2018-07-10 13:53:54

阅读数:35

评论数:0

多线程一:创建线程的方式

1. 继承Thread类,重写run方法2. 实现Runnable接口,必须完成run函数使用方式:MyThreadImp 为实现的Runable类 MyThreadImp myThreadImp = new MyThreadImp(); Thread thread = new Thread(...

2018-07-10 13:53:03

阅读数:34

评论数:0

jvm原理五:垃圾收集算法

1.标记-清除算法算法:分为“标记”和“清除”两个阶段。首先标记出所有需要回收的对象,在标记完成后统一回收所有标记的对象缺点:一是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找...

2018-07-10 13:42:34

阅读数:25

评论数:0

jvm原理四:利用可达性分析算法GC怎么判断对象生存还是死亡,经过了几次过滤,每次都做了什么

经历了2次标记过程,即2次过滤过程。第一次:如果对象在进行可达性分析后发现没有GC Roots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法,当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,虚拟...

2018-07-10 13:41:35

阅读数:69

评论数:0

jvm原理三:判断对象是否存活算法

1.计数算法 给对象中添加一个应用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能在被使用的。在主流的Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互循环引用的问题引用计数器缺陷的例子: ob...

2018-07-10 13:40:35

阅读数:22

评论数:0

jvm原理二:对象创建在虚拟机中是非常平凡的行为,在并发情况下,若两个对象同时申请同一地址,如何解决

解决方法:(1)对分配内存空间的动作进行同步处理——实际上虚拟机采用CAS配上失败重试的方式保证更新操作的原子性。(2)把内存分配的动作按照线程划分在不同的空间之中执行,即每个线程在java堆中预先分配一小块内存,称为本地线程分配缓冲(Thread Local Allocation Buffer,...

2018-04-17 22:49:38

阅读数:84

评论数:0

jvm原理一:HotSpot虚拟机如何为新生对象分配内存

(1)指针碰撞   假如java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲那边挪动一段与对象大小相等的距离,这种分配方式称为“指针碰撞”。(2)空闲列表   如果java堆中的内存并不是规整的,已使...

2018-04-17 22:33:23

阅读数:70

评论数:0

layui中的三种分页方式

在使用下面代码前,需要先引入layui的css和js文件 Insert title here 开门见山 : 默认分页 开启 URL hash 是时候看一下完整功能了! layui.use([...

2018-01-17 15:13:35

阅读数:1635

评论数:1

codeigniter中向视图中动态添加数据

1. $data = array( 'title' => 'My Title', 'heading' => 'My Heading', 'message' => 'My Message'); $this->load->view('blogvie...

2018-01-16 22:50:49

阅读数:126

评论数:0

codeigniter中设置默认路由

$route['default_controller'] = 'pages/view'; $route['(:any)'] = 'pages/view/$1';

2018-01-16 22:50:04

阅读数:142

评论数:0

codeigniter中路由的组成

遵循PATH_INFO模式(thinkphp中三种模式中的一种) [your-site-url]index.php/pages/view/1/2/3        #pages未知为控制器, view为方法名                                          ...

2018-01-16 22:48:22

阅读数:112

评论数:0

文本编译器ueditor的使用

1.首先下载文本编译器ueditor 首先在ueditor官网下载一个编译器   2.然后再使用的html中引入js文件包 ueditor.config.js ueditor.all.min.js zh-cn.js   3. html代码中要有   4. 引入j...

2017-12-24 20:20:01

阅读数:106

评论数:0

tp5 数据查询和分页

1.  新建一个model类 namespace app\admin\model; use think\Model; class Admin extends Model{ } 2. 调用model类进行分页 public function lst(){ $list = Admi...

2017-12-24 20:16:57

阅读数:1773

评论数:0

tp5数据验证及验证场景详解

1.  在接收数据时直接进行验证: public function add(){ if(request()->isPost()){ $validate = new Validate([ 'username' => 'require|ma...

2017-12-24 20:13:08

阅读数:3727

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭