美文网首页
Java中的线程快速了解

Java中的线程快速了解

作者: BoYueStudio | 来源:发表于2020-12-23 22:28 被阅读0次

线程

进程和线程有什么区别?

进程是指应用程序在运行时的状态,进程会占用系统的cpu以及内存资源。线程是指进程当中的执行流程,多个线程协同工作,会共同使用进程的资源,才确保进程的功能得以实现。

Java当中如何实现线程呢?​

继承Thread类

实现runnable接口,只是任务类,还需手动创建线程对象

线程池机制来创建和管理线程 ThreadPool

singleThreadPool  创建一个线程的线程池

fixedThreadPool   创建固定数量的线程池

cachedThreadPool   数量可缓存的线程池

scheduledThreadPool  有定时功能的线程池

线程的生命周期

新建状态(new一个线程的时候)

    调用线程.start方法的时候,等待cpu分配时间片。

可运行状态

    当cpu分配到了时间片之后,线程开始运行,运行run方法当中的内容。

运行状态

    当线程遇到sleep、wait等方法的时候,线程会进入阻塞状态。

阻塞状态

    当休眠时间到期,或者被notify了,线程又回到了可运行状态。

死亡状态

    线程运行结束之后,就会销毁,被jvm的gc回收。

多线程并发或线程安全问题如何解决?

1、通过volatile 关键字修饰变量,可以实现线程之间的可见性,避免变量脏读的出现。底层是通过限制jvm指令的重排序来实现的,适用于一个线程修改,多个线程读的场景。

2、通过synchronized锁(任意对象)来实现线程同步,自动锁的思想。底层实现原理:当有线程进入同步代码块之后,利用jvm的计数器将锁的标记置为1,当别的线程再想进入的时候,发现锁的标记为1。该线程就去锁池等待,当第一个线程出来之后,锁的标记会置为0。 之后cpu会随机分配一个线程再次进入同步代码块。

3、通过lock锁的机制,进行手动lock,和unlock,但是这种很容易出现死锁。注意加锁以及解锁的顺序,就可以避免死锁。

4、通过线程安全的集合类,可以解决并发问题。           

     ConcurrentHashMap

    CopyonWriteArrayList

5、使用并发包下面的原子类,底层使用的是cas机制(乐观锁),可以解决并发问题 atomicInteger  线程安全的原子整型类。

6、使用线程池来创建和管理线程,也可以一定程度上解决并发问题。

7、使用ThreadLocal来修饰变量,可以解决并发问题。ThreadLocal底层是怎么实现的?多个线程会复制一份threadLocao变量的副本进行操作,互不影响,来保证线程安全的。

相关文章

  • Java中的线程快速了解

    线程 进程和线程有什么区别? 进程是指应用程序在运行时的状态,进程会占用系统的cpu以及内存资源。线程是指进程当中...

  • 线程池

    Java中的多线程了解么,线程池的增长策略和拒绝策略了解么java.util.concurrent.ThreadP...

  • 快速了解Java线程池

    本文同时载于本人CSDN 1.概述 使用Thread类执行某个任务,任务运行时每次都要创建线程,任务结束则要销毁线...

  • 快速了解Java线程池

    之所以要使用线程池,是因为使用new Thread在大型项目中是有弊端的: 每次new Thread新建对象,性能...

  • ThreadLocal

    定义:线程的局部变量;在多个线程中,分别有独立的值(副本)。特点:线程安全、无额外开销(快速)原理:java中用h...

  • 了解Java中的多线程

    1. 线程与并发 1.1. 理解线程与进程的区别(了解) 进程:是指一个内存中运行的应用程序,每个进程都有自己独立...

  • java中的线程,进程了解。

    转自:http://blog.csdn.net/z69183787/article/details/5291029...

  • Java多线程:synchronized的可重入性

    从Java多线程:线程间通信之volatile与sychronized这篇文章中我们了解了synchronized...

  • 笔记-Android中的线程使用

    目录 Java中的线程 Java中如何创建线程 Java中的线程同步问题(synchronized关键字,lock...

  • Android中的线程使用与Java有何不同?

    目录 Java中的线程 Java中如何创建线程 Java中的线程同步问题(synchronized关键字,lock...

网友评论

      本文标题:Java中的线程快速了解

      本文链接:https://www.haomeiwen.com/subject/jaxpnktx.html