摘要: ThreadLocal提供了线程本地变量,也就是说如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地副本。当多个线程操作这个变量的时候,实际操作的是自己本地内存里面的变量,从而避免了线程同步问题,创建一个ThreadLocal变量后,每个线程都会复制一个变 阅读全文
posted @ 2021-04-17 10:53 莫慌*急啥 阅读(117) 评论(0) 推荐(0)
摘要: java中,线程分为两类,分别时守护线程(daemon线程)和user线程(用户线程)。在JVM启动的时候,会调用main函数,main函数所在的线程就是一个用户线程,其实在JVM内部同时还调用了其他好多守护线程,例如垃圾回收线程等。 守护线程和用户线程的区别:当最后一个非守护线程执行完毕之后,不管 阅读全文
posted @ 2021-04-11 21:41 莫慌*急啥 阅读(124) 评论(0) 推荐(0)
摘要: 线程死锁 死锁是指两个或两个以上的线程在执行过程中,因为争夺资源而造成的互相等待的现象。在无外力作用下,这些线程会一直互相等待而无法继续运行下去 死锁产生的条件 1、互斥条件:指线程对已经获取到的资源进行排他性使用。即该资源同时只能由一个线程占用。如果此时还有其他线程请求获取该资源,则请求者只能等待 阅读全文
posted @ 2021-04-11 21:01 莫慌*急啥 阅读(65) 评论(0) 推荐(0)
摘要: yield()让出CPU执行权 Thread类中有一个静态的yield方法,当一个线程调用yield方法时候,当前执行线程会让出自己的CPU使用权,然后处于就绪状态,线程调度器会从线程就绪队列里面获取一个线程优先级最高的线程,当然也有可能会调度到刚刚让出CPU的那个线程来获取CPU执行权。 publ 阅读全文
posted @ 2021-04-11 19:05 莫慌*急啥 阅读(255) 评论(0) 推荐(0)
摘要: 等待线程执行终止 在项目中,往往需要多个等某几个事情完成之后才能继续执行,比如多个线程加载资源,需要等待多个线程全部加载完毕在做汇总。Thread类中提供了一个join()方法就可以完成这个事情,前面的等待通知等都是Object类中的方法,而join()方法是Thread类直接提供 public s 阅读全文
posted @ 2021-04-11 11:47 莫慌*急啥 阅读(248) 评论(0) 推荐(0)
摘要: JAVA中的Object是所有类的父类,鉴于继承机制,java把所有类都需要的方法放到了Object类中,其中就有线程的通知和等待系列的方法 1、wait()方法 当一个线程调用一个共享变量的wait()方法的时候,该调用线程就会被阻塞挂起,知道发生以下几种情况,该线程才会被重新唤醒 1、其他线程调 阅读全文
posted @ 2021-04-09 22:09 莫慌*急啥 阅读(126) 评论(0) 推荐(0)
摘要: 线程 线程是进程中的一个实体,本身是不会独立存在的,操作系统在分配资源的时候是把资源分配给进程的,但是CPU资源比较特殊,被分配到线程中了,因为真正要占用CPU运行的是线程,所以也说线程是CPU分配的基本单位 一个进程有多个线程,这些线程共享进程的堆和方法区资源,但是每个线程都有自己独立的程序计数器 阅读全文
posted @ 2021-04-08 21:33 莫慌*急啥 阅读(46) 评论(0) 推荐(0)