并发编程
文章平均质量分 61
九八年的尾巴
一个愿意分享和倾听的年轻人
展开
-
线程安全性:全方位讲解线程安全性问题
什么是线程安全性? 当多个线程访问某个类,不管运行时环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类为线程安全的–《并发编程实战》 什么是线程不安全? 多线程并发访问时,得不到正确的结果 案例:无论执行多少次 都无法得出预期正确的结果 正确结果(1000) public class UnSafeThread { private static int num = 0; private static Cou原创 2021-02-13 22:45:12 · 246 阅读 · 3 评论 -
守护线程案例讲解
线程分类 用户线程:只要线程还没用运行完成,程序就不会退出 守护线程: 任何一个守护线程都是整个程序中所有用户线程的守护者,只要有活着的用户线程,守护线程就活着。当JVM实例中最后一个非守护线程结束时,也随JVM一起退出 守护线程案例 public class DaemonThreadDemo implements Runnable{ @Override public void run() { while (true){ System.out.pr原创 2021-02-13 19:40:24 · 218 阅读 · 0 评论 -
线程的优先级案例讲解
线程优先级意义 线程的优先级告诉程序该线程的重要程度有多大。如果有大量线程都被堵塞,都在等候运行,程序会尽可能地先运行优先级的那个线程。 但是,这并不表示优先级较低的线程不会运行。若线程的优先级较低,只不过表示它被准许运行的机会小一些而已。 举例:就像车站买票 旁边会有牌子提示“军人优先” 就像并发运行时候,CPU分出小块时间片,线程优先级高的线程更容易获取时间片 线程优先级分类 线程的优先级设置可以为1-10的任一数值,Thread类中定义了三个线程优先级,分别是:MIN_PRIORITY(1)、NORM原创 2021-02-13 16:11:58 · 235 阅读 · 0 评论 -
线程的中断操作案例详解
为什么需要中断操作? 案例:写一个线程死循环,比如运行到某一个时刻,我需要去关掉 public class Demo implements Runnable { @Override public void run() { while (true){ System.out.println(Thread.currentThread().getName()); try { Thread.sleep(1原创 2021-02-12 23:14:22 · 194 阅读 · 0 评论 -
线程的挂起与恢复案例详解
什么是挂起线程? 线程的挂起操作实质上就是使线程进入“非可执行”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行。在线程挂起后,可以通过重新唤唤醒线程来使之回服运行 为什么要挂起线程? CPU分配的时间片非常短、同时也非常珍贵。避免资源的浪费 如何挂起线程? 被废弃的方法thread.supend()该方法不会释放线程所占用的资源,如果使用该方法将某个线程挂起,则可能会使其它等待资源的线程锁死 thread.resume()方法本身并无问题,但是不能独立于supend()原创 2021-02-12 22:38:17 · 603 阅读 · 0 评论 -
进程与线程的区别以及线程状态及相互转换和创建线程方式的讲解
线程和进程区别 进程:是系统进行分配和管理资源的基本单位 线程:进程的一个执行单元,是进程内调度的实体、是CPU调度和分派的基本单位,是比进程更小的独立运行的基本单位。线程也被称为轻量级进程,线程是程序执行的最小单位。 一个程序至少一个进程,一个进程至少一个线程。 main函数演示 public class Demo { public static void main(String [] args) { System.out.println("123"); try原创 2021-02-12 18:08:15 · 292 阅读 · 2 评论