多线程
soultacit
这个作者很懒,什么都没留下…
展开
-
线程安全活跃态问题及竞态条件
1.先检测后执行,执行依赖于检测的结果,而检测结果依赖于多个线程的执行时序,而多个线程的执行时序通常情况下是不固定不可判断的,从而导致执行结果出现各种问题,常见一种可能的解决办法就是:在一个线程修改访问一个状态时,要防止其他线程访问修改,也就是加锁机制,保证原子性。是线程在对同一把锁进行竞争的时候,未抢占到锁的线程会等待持有锁的线程释放锁后继续抢占,如果两个或两个以上的线程互相持有对方将要抢占的锁,互相等待对方先行释放锁就会进入到一个循环等待的过程,这个过程就叫做死锁。2.延迟初始化(典型为单例)原创 2023-03-22 10:46:23 · 146 阅读 · 0 评论 -
多线程创建的方式
1、 继承Thread类创建多线程:继承java.lang.Thread类,重写Thread类的run()方法,在run()方法中实现运行在线程上的代码,调用start()方法开启线程。start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法。3. 实现Callable接口,Callable规定的方法是call(),任务执行后有返回值,可以抛出异常。2. 实现Runnable接口,Runnable规定的方法是run(),无返回值,无法抛出异常。原创 2023-03-22 10:40:02 · 189 阅读 · 0 评论 -
如何预防死锁?
死锁:线程在对同一把锁进行竞争的时候,未抢占到锁的线程会等待持有锁的线程释放锁后继续抢占,如果两个或两个以上的线程互相持有对方将要抢占的锁,互相等待对方先行释放锁就会进入到一个循环等待的过程,这个过程就叫做死锁。放重新加入到系统的资源列表中,可以被其他的进程使用,而等待的进程只有重新获得自己原有的。一个进程不能获得所需要的全部资源时便处于等待状态,等待期间他占有的资源将被隐式的释。采用资源有序分配其基本思想是将系统中的所有资源顺序编号,将紧缺的,稀少的采用较大的。资源以及新申请的资源才可以重新启动执行。原创 2023-03-22 10:33:30 · 67 阅读 · 0 评论 -
如何预防死锁?
死锁:线程在对同一把锁进行竞争的时候,未抢占到锁的线程会等待持有锁的线程释放锁后继续抢占,如果两个或两个以上的线程互相持有对方将要抢占的锁,互相等待对方先行释放锁就会进入到一个循环等待的过程,这个过程就叫做死锁。放重新加入到系统的资源列表中,可以被其他的进程使用,而等待的进程只有重新获得自己原有的。一个进程不能获得所需要的全部资源时便处于等待状态,等待期间他占有的资源将被隐式的释。采用资源有序分配其基本思想是将系统中的所有资源顺序编号,将紧缺的,稀少的采用较大的。资源以及新申请的资源才可以重新启动执行。原创 2023-03-22 10:34:36 · 64 阅读 · 0 评论