Java多线程
文章平均质量分 77
Java多线程
人无再少年...
这个作者很懒,什么都没留下…
展开
-
InheritableThreadLocal类
由源码可知线程创建初始赋值的时候新建了一个ThreadLocalMap,所以父线程的inheritableThreadLocals变量和子线程的inheritableThreadLocals是相互独立的。上面说的父子线程的inheritableThreadLocals 变量值改变不会相互影响,如果是父线程改变了inheritableThreadLocals变量中存储的对象的属性,那么子线程是可以获取到改变后的属性值的。InheritableThreadLocal类可使子线程继承父线程的值。原创 2024-03-21 22:44:45 · 513 阅读 · 1 评论 -
ThreadLocal类
ThreadLocalMap中的key存储的是ThreadLocal对象,value就是存储的值。其他线程不可以访问当前线程对象中ThreadLocalMap的值。ThreadLocal类的主要作用是将数据放入当前线程对象中的ThreadLocalMap中,这个ThreadLocalMap是Thread类的实例变量。也就是重写ThreadLocal类中的initialValue()方法后,在不同的线程中初始值也是各自线程自己私有的,每个线程都会初始自己私有的值。原创 2024-03-19 22:33:31 · 245 阅读 · 1 评论 -
synchronized关键字的使用
synchronized放在public之前或者之后没有区别。1、修饰某个类中的非静态方法时,synchronized锁的并不是所修饰的方法,而是当前类的对象。myObject。2、当线程A获得myObject对象的锁之后正在调用方法,这时线程B想要调用方法则需要等待,也就是同步。这时候线程A调用方法,线程B调用方法,这时是异步的,因为分别是两把不同锁。4、线程A先持有myObject 对象的锁,线程B可以异步调用myObject对象中没被synchronized修饰的方法。原创 2024-03-05 22:36:42 · 702 阅读 · 1 评论 -
Java中线程的join()方法的使用
从源代码可以看出join()方法是通过wait(long)方法实现线程暂停的,由于调用wait()方法后锁会被释放所以join()方法被调用后会释放当前持有的锁。子线程调用join()方法之后,主线程会在子线程调用join()方法处阻塞,直到子线程执行完毕销毁,然后继续执行join()方法后主线程的代码。join(long)方法中的参数是等待时间,当时间到了并重新获得了锁,则当前线程会继续向后运行,如果没有重新获得锁,则一直尝试,直到获得锁为止。join()方法的源代码。原创 2024-03-03 16:01:52 · 339 阅读 · 0 评论 -
java使用ThreadPoolExecutor的方式创建简单的线程池
java使用ThreadPoolExecutor的方式创建简单的线程池使用ThreadPoolExecutor的方式创建参数介绍代码示例 使用ThreadPoolExecutor的方式创建 new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit,runnableTaskQueue,handler); 参数介绍 **1.corePoolSize(线程池的基本大小):**当提交一个任务到线程池时,线程池会创建一原创 2022-05-07 18:30:39 · 2079 阅读 · 0 评论 -
wait/notify机制
wait()方法使线程暂停执行,notify()方法通知暂停的方法开始执行。原创 2024-03-01 22:37:46 · 374 阅读 · 0 评论