
JAVA多线程并发
Java多线程
天元白手
专精于企业数据分析、设计及实施商业智能业务解决方案、软件开发及数据管理和治理。
展开
-
什么是JAVA的乐观锁、悲观锁和自旋锁?
乐观锁 乐观锁是一种非常乐观的思想,认为读多写少,遇到并发的可能性低,每次去拿数据的时候都认为别人不会修改,所以就不会上锁,但是在更新的时候会判断一下在此期间别人有没有更新这个数据,采取在写之前先读出当前的version(版本号),比较跟上一次的版本号,如果一样则更新,如果不一样则重复读—比较—写的操作。 java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入的值是否一样,一样则更新,否则更新失败。 ...原创 2021-06-25 14:57:57 · 334 阅读 · 0 评论 -
如何创建一个线程池
什么是Java线程池? 线程池就是提前创建若干个线程,如果有任务需要处理,线程池里的线程就会处理任务,处理完之后线程并不会被销毁,而是等待下一个任务。由于创建和销毁线程都是消耗系统资源的,所以当你想要频繁的创建和销毁线程的时候就可以考虑使用线程池来提升系统的性能。 为什么要使用线程池? 1、创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2,那么是不是说开启一个线程来执行这个原创 2021-06-24 17:05:11 · 1481 阅读 · 1 评论 -
Java实现线程的两种方式
第一种方式是继承Thread类 Thread类是java.lang包中的一个类,从这个类中实例化的对象代表线程,通过继承Thread类创建并执行一个线程的流程如下: (1)创建一个继承自Thread类的子类 (2)复写Thread类的run方法 (3)创建线程类的一个对象 (4)通过线程类的对象调用start方法启动线程(启动之后会自动调用复写的run方法执行线程) 代码实现: package com.mybatisplus.demo; /** * @author huiXing * @version原创 2021-06-23 23:34:54 · 645 阅读 · 0 评论 -
start与run的区别
1、start()方法是用来开启一个线程的,真正实现了多线程运行,这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码 2、通过Thread类调用start()方法来启动一个线程,这时的线程是处于就绪状态,并没有运行 3、线程体run()里面包含了执行线程的内容,程序执行到run()线程体的时候,线程就进入了运行状态,开始运行run函当中的代码,Run方法运行结束,此线程终止,然后CPU再调度其他的线程。 ...原创 2021-05-28 22:34:51 · 732 阅读 · 0 评论 -
sleep与wait的区别
public class ThreadRun extends Thread{ //线程体 @Override public void run(){ System.out.println("myThread.run()+"+i); } public static void main(String[] args) { ThreadRun thread = new ThreadRun(); try { thread.wait(原创 2021-05-28 22:24:01 · 215 阅读 · 0 评论