
java多线程
大百求知路
这个作者很懒,什么都没留下…
展开
-
临界区与竞态条件
临界区概念:一段代码块内如果存在对共享资源的多线程读写操作,称这段代码块为临界区。例如:static int counter = 0;static void increment()//临界区{counter++;}static void decrement()//临界区{counter–;}容易出现的问题:多个线程访问共享资源,在对共享资源进行读写操作时易发生指令交错,就会出现问题。解决方法:synchronized,即俗称的对象锁,它采用互斥的方式让同一时刻至多只有一个线程能原创 2021-10-17 20:54:02 · 186 阅读 · 0 评论 -
Interrupt()多线程设计模式之两阶段终止模式
两阶段终止模式(Two Phase Termination)1.概念:在一个线程T1中如何“优雅”终止线程T2?这里的【优雅】指的是给T2一个料理后事的机会。2.图解:3.对图进行解释:就是在一个线程执行while()循环时,第一个阶段终止是调用isInterrupt()方法看有没有被打断,如果打断,那就料理后事结束循环;如果没有被打断,第二个终止阶段就是监控线程睡眠2秒后看有无异常,没有异常就执行监控记录,有异常就设置打断标记,返回while循环继续判断打断标记,然后继续上述循环。4.适用场景:原创 2021-10-17 16:39:30 · 142 阅读 · 0 评论 -
interrupt()方法理解和实例
本文主要讲interrupt方法的用途和用法,还请大家往下看。jdk中的描述是这样的:interrupt():中断这个线程。 除非当前线程中断自身,这是始终允许的,所以调用此线程的checkAccess方法,这可能会导致抛出SecurityException 。 如果该线程阻塞的调用wait() , wait(long) ,或wait(long, int)的方法Object类,或者在join() , join(long) , join(long, int) , sleep(long) ,或sleep(l原创 2021-10-16 18:25:14 · 1042 阅读 · 0 评论 -
yield()和sleep()的区别
sleep()1.调用sleep()会让当前线程从running转换到timed wating(阻塞)2.其他线程可以使用interrupt方法打断正在睡眠的线程,这时sleep()方法会抛出InterruptException3.睡眠结束后的线程未必会立刻得到执行(还得看操作系统的任务调度器)4.建议使用timeUnite来代替Thread的sleep来获得更好的可读性yield1.调用yield会让当前线程从running(运行状态)转换为runnabled(就绪状态),然后调度执行其他线程原创 2021-10-09 21:07:30 · 304 阅读 · 0 评论 -
线程中常见方法的描述
本文主要介绍一下线程中常见方法的描述和注意事项,写的有错误的地,还望读者私信指出start():功能说明:启动一个新的线程,在新的线程中运行run方法的代码。注意:start()方法只是让线程就绪,里面的代码不一定立刻执行,能不能执行还得看操作系统任务管理器的调用。每个线程对象的start()方法只能调用一次。run()功能说明:新线程启动后会调用的方法注意:如果在创建Thread对象时传入了runnable参数,则会执行runnable中的run方法;如果没传入,则默认不执行;可以创建thre原创 2021-10-09 16:42:47 · 105 阅读 · 0 评论 -
创建线程的3个方法
本文谈一谈创建线程的3个方法,看下文方法1:直接使用Thread//创建线程对象Thread t = new Thread(){public void run(){//要执行的任务}};//启动线程t.start();方法二:使用Runnable配合Thread,目的是把【线程】和【任务】分开Runnable runnable = new Runnable(){public void run(){//要执行的任务}};//创建线程对象Thread t = new Threa原创 2021-10-08 16:02:05 · 702 阅读 · 0 评论 -
进程,线程;并发和并行;同步和异步
**程序:**程序就是一个指令和数据的集合,它是静态的,就像电脑中的软件一样,都是以.exe结尾的可执行程序。**进程:**进程是程序的实体,它是动态的。计算机内部进程之间的交流很复杂被称为(IPC - inter-process-communication),它是操作系统执行和调度的最小单位,它不是操作系统的东西,而是程序动态运行的实体。**线程:**线程是进程中的一部分指令集,进程是由多个线程组成,它是CPU调用的最小单元。**并发:**单核CPU执行线程在 微观看来是串行执行,宏观看来是并行执行原创 2021-10-08 14:33:27 · 83 阅读 · 0 评论