多线程
文章平均质量分 66
越沂
加油学啊
展开
-
自旋锁、CAS、悲观锁、乐观锁
目录1.自旋2、CAS3、自旋锁应用示例 仿 Lock一、自旋有三个线程,我想要第三个线程始终满足最后一个执行,那么我可以采取只要前两个线程没有执行完毕,我就在第三个线程前面始终来一个自旋等待,只要线程的数量自旋到只剩一个的时候,就让第三个线程执行//自旋等待例子public static void main(String[] args) { new Thread(new Runnable() { public void run() { Sy原创 2021-10-04 19:09:15 · 445 阅读 · 0 评论 -
线程池(详细版)
线程池: 线程是一个操作系统概念,操作系统负责这个线程的创建、挂起、运行、阻塞和终结操作,每个用户都来访问,可能就是1s的事,但是服务器要为你单独创建线程,那么物理机基本上都创建线程而业务请求处理资源少了1、使用callable创建线程public class Test1 { public static void main(String[] args) throws InterruptedException, ExecutionException { MyThr...原创 2021-10-02 14:55:27 · 3677 阅读 · 0 评论 -
进程和线程,状态,sleep和yield区别
1)进程和线程进程:是运行的程序的实例,他具有一块独立的内存空间,多个进程是可以并发运行的例:比如 电脑在运行的时候既可以打开记事本又可以看视频,记事本是一个进程,看视频也是一个进程线程:线程位于进程中,是进程中的一条执行线索,一个进程中可能有多个线程,线程是进程运行的最小基本单位,一个进程中至少要有一个线程例:比如说一个软件(进程)同时下载几个文件(多个线程)2)线程的状态:新建 (Born) : 新建的线程处于新建状态就绪 (Ready) : 在创建线程后,start(...原创 2021-10-01 13:01:05 · 586 阅读 · 0 评论 -
多线程创建的三种方式
1、继承Thread类//运行发现线程是并发执行的,由cpu调度,并不是说main方法执行完,run才执行public class Test extends Thread { public static void main(String[] args) { //首先,new一个本类对象 Test test=new Test(); test.start(); //可以直接写成下面一句,理解就行,道理是一样的 //new Test().star原创 2021-09-16 10:48:06 · 89 阅读 · 0 评论 -
多线程:线程的状态
线程的方法:停止线程:1.建议线程正常停止——>利用次数,不建议死循环2、建议使用标志位——>设置一个标志位3、不要使用stop或者destroy等过时或者JDK不建议使用的方法线程的停止代码实现public class Test implements Runnable{ private boolean flag=true; public static void main(String[] args) { Test test=new ...原创 2021-09-16 16:35:04 · 152 阅读 · 0 评论 -
线程同步,可重入锁,synchronized
多个线程操作同一个资源并发:同一个对象被多个线程同时操作 上万人同时抢100张票 两个银行同时取钱:银行卡只有1000元,你和妻子一起取钱,然后你妻子可能取到1000元,此时银行卡里已经没有钱了,那么如果不同步的话,你可能就取到-1000元,这可能吗?处理多线程问题时,多个线程访问同一个对象,并且某些线程还想要修改这个对象,这时候我们就需要线程同步,线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完...原创 2021-09-16 22:45:40 · 626 阅读 · 0 评论 -
并发、并行、异步、同步
并发,她单纯代表计算机能执行多项任务,至于计算机怎么做到“并发”则有许多不同的形式,比如对于一个单核处理器,计算机可以通过分配时间片的方式,让一个任务运行一段时间然后切换到另一个任务再一段时间,不同的任务会这样交替往复的一直执行下去,这个过程也被称作是进程或者线程的上下文切换当然对于多核处理器,情况就有所不同了,我们可以在不同的核心上真正并行地执行任务,而不用通过分配时间片的方式运行,这种情况也就是我们所说的并行同步代表需要等到必须前一个任务执行完毕之后才能进行下一个任务,因此在同步中并没有并发或者原创 2021-09-30 23:21:33 · 148 阅读 · 0 评论