
多线程
文章平均质量分 68
我和ye猫子
这个作者很懒,什么都没留下…
展开
-
Hashtable与HashMap的区别(图文详解)
一、HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。 HashMap存数据的过程是:...原创 2022-01-17 11:56:16 · 24721 阅读 · 1 评论 -
进程和线程的区别
https://www.cnblogs.com/coder-programming/p/10595804.html转载 2021-08-30 18:25:38 · 95 阅读 · 0 评论 -
多线程实践——(转)Lock和synchronized的区别和比较详解
一、Lock和synchronized 的详细说明参考文档https://www.cnblogs.com/handsomeye/p/5999362.html二、Sychronized 和 lock的区别1.首先synchronized是java内置关键字,在jvm层面, Lock是个java提供的一个接口;2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;3.synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程...原创 2021-07-09 16:13:58 · 313 阅读 · 0 评论 -
多线程实践——ThreadLocal的应用场景及引申
参考文档一:https://www.cnblogs.com/zz-ksw/p/12684877.html在通常的业务开发中,ThreadLocal 有两种典型的使用场景场景1:ThreadLocal 用作保存每个线程独享的对象,为每个线程都创建一个副本,这样每个线程都可以修改自己所拥有的副本, 而不会影响其他线程的副本,确保了线程安全。场景2:ThreadLocal 用作每个线程内需要独立保存信息,以便供其他方法更方便地获取该信息的场景。每个线程获取到的信息可能都是不一样的,前面原创 2021-07-09 16:10:30 · 158 阅读 · 0 评论 -
多线程安全问题(sychornized,lock(ReentantLock),volatile,ThreadLocal)
线程安全问题分析:https://blog.youkuaiyun.com/yojofly/article/details/115386382造成线程安全的原因:产生原因,cpu,内存,io的读写速率不同,cpu>内存>io1、原子性问题2、可见性问题3、有序性问题join()规则如果线程A执行操作ThreadB.join()并成功返回,那么线程B中的任意操作(改变公共变量)happens-before(多线程可见)于线程Apackage com.jokin...原创 2021-06-22 22:18:19 · 978 阅读 · 1 评论 -
Callable<T> task 实现多线程,带返回值
package com.jokin.learn.Jdk18;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class ThreadPool2 { public static void mai.原创 2021-06-16 21:11:11 · 419 阅读 · 0 评论 -
Java线程生命周期及常用方法说明
一、Java线程的生命周期——6大状态Java线程从创建到销毁,一共经历6个状态(不一定每一种状态都经历):NEW:初始状态,线程被构建,但是还没有调用start方法RUNNABLED:运行状态,JAVA线程把操作系统中的就绪和运行两种状态统一称为“运行中”BLOCKED:阻塞状态,表示线程进入等待状态,也就是线程因为某种原因放弃了CPU使用权,阻塞也分为几种情况WAITING:等待状态TIME_WAITING:超时等待状态,超时以后自动返回TERMINATED:终止状态,表示当前线程执行完毕J原创 2021-06-13 19:14:38 · 1398 阅读 · 1 评论 -
线程的全生命周期(5种状态)及wait()、 notify()以及notifyAll() 和多线程插队join
Java中的线程的生命周期大体可分为5种状态。1.新建(NEW):新创建了一个线程对象。2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu...原创 2021-06-07 21:12:58 · 379 阅读 · 0 评论