线程与进程
进程:系统进行资源分配和调用的独立单元,每一个进程都有它的独立内存空间和系统资源
线程:线程是进程里面的一条执行路径,每个线程同享进程里面的内存空间和系统资源
线程与进程的关系
进程 与 进程 之间的关系:进程之间的内存空间和系统资源是独立的
同一个进程里的多条线程 :线程之间的内存空间和系统资源是共享的
并发与并行
并发是指多个任务在重叠的时间段内执行,可在单个处理器上交替执行,也可在多个处理器上同时执行
并行是指多个任务真正地同时执行,每个任务有自己的处理器或核心去执行,提高系统的处理能力和效率
线程的阻塞
setPriority():线程的优先级别,设置线程有限级别,但只会影响线程的抢到资源的概率,不会直接影响结果
yeild():线程的礼让,线程由运行态转入就绪态,有可能再次争抢到资源
join():线程的合并,将线程加入当前线程中,运行结束后再执行当前线程,线程阻塞的
线程的中断
stop():线程立即终止,该方法已弃用
interrupt():改变当前线程状态,但不会使线程中断。使用isInterrupt()可检测线程的状态
守护线程
含义:一种特殊类型的线程,在Java中用于为其他线程提供服务或执行后台任务
生命周期:当所有非守护线程结束时,虚拟机会自动停止守护线程并退出程序
线程安全
含义:在多线程环境下,对共享资源进行访问和操作时,保证数据的正确性、一致性和可靠性的属性
synchronized:同步机制(同步代码块、同步方法),对共享资源进行同步控制,防止多个线程同时对数据进行修改,从而保证数据的一致性
lock:ReentrantLock对象进行lock()、unlock()
使用线程安全的集合类:ConcurrentHashMap、Vector、Stack、HashTable(对于线程不安全的集合,可以使用集合工具类Colloctions中的sychronizedMap\sychronizedList\sychronizedColloction等方法对线程不安全的集合进行加工变成线程安全)
死锁
含义:
条件:互斥、不可剥夺、请求与保持、循环等待
线程的局部变量共享
ThreadLocal:Java中的一个线程局部变量工具类,它提供了一种简单的方式来管理线程的局部变量
ThreadLocal底层存储Map集合,其中key存储当前线程,value存储待共享的资源
每个线程都可以独立地访问自己的ThreadLocal变量,且线程之间的数据不会相互干扰