美文网首页
Java的多线程简单了解

Java的多线程简单了解

作者: 穿梭在围城 | 来源:发表于2018-11-14 17:10 被阅读0次

Java中的多线程

一、进程的概念

  • 进程:程序的执行过程,它持有资源(共享内存、共享文件)和线程

  • 执行过程:代表着动态性

  • 持有:代表着载体

  • 资源:代表内存

二、线程的概念

  • 线程:是程序中最小的执行单元

  • 一个进程中可以有多个线程

  • 多个线程需要通信才能正常工作称之为线程的交互,交互的方式又分为两种:互斥(相互抢夺资源)和同步(相互配合)

  • 栗子(好好吃):进程可以类比班级,是学校的一个单元(windows上的一个程序);而线程就是班级里面的学生,是班级里面种最小的一个执行单元(线程),而上体育课(执行任务),打篮球的进攻双方互相抢夺篮球的控制权(互斥:多线程抢夺CPU的控制权),而攻守双方中的球员彼此不会抢夺己方的篮球控制权(同步:相互配合,不会想多CPU的控制权,只有等到篮球传递到自己的手上才会进行任务)。

三、Java对线程的支持(创建以及常见方法)

  • 创建方式(4种)

    1. 继承Thread接口

    2. 实现Runnable接口

    3. 使用Callable和Future创建线程

    4. 通过线程池获取(Executor)

  • Tread的常用方法

image.png
  • 线程的启动

    调用Thread的start()方法启动。

    一般这里会出现面试题:run()方法和start()方法的区别?

    调用run()方法只是单纯的调用了一个方法,而start()方法才是线程的正确启动方法。

  • 线程的结束

    Thread类中有一个stop()方法,但是!!!!!!这个stop方法并不推荐使用,究其根本是因为这个方法是Java1.0提供的,不是说他出现的早而不用,而是另有其他的原因:因为它会让我们的线程直接结束,就相当于至接拔掉电脑的电源,你都不知道线程执行到了什么地方和完成了什么任务,所以并不推荐这种方式来结束掉线程。

    正确的结束方式为:设置结束标志

  • 线程的同步

    同步锁、同步方法、同步代码块

    常见的面试题:wait()与sleep()的区别?
    • sleep() 方法是线程类(Thread)的静态方法,让调用线程进入睡眠状态,让出执行机会给其他线程,等到休眠时间结束后,线程进入就绪状态和其他线程一起竞争cpu的执行时间。 因为sleep() 是static静态的方法,他不能改变对象的机锁,当一个synchronized块中调用了sleep() 方法,线程虽然进入休眠,但是对象的机锁没有被释放,其他线程依然无法访问这个对象。
    • wait()是Object类的方法,当一个线程执行到wait方法时,它就进入到一个和该对象相关的等待池,同时释放对象的机锁,使得其他线程能够访问,可以通过notify,notifyAll方法来唤醒等待的线程

相关文章

  • Java的多线程简单了解

    Java中的多线程 一、进程的概念 进程:程序的执行过程,它持有资源(共享内存、共享文件)和线程 执行过程:代表着...

  • 多线程并发 (五) ReentrantLock 使用和源码

    章节: 多线程并发 (一) 了解 Java 虚拟机 - JVM 多线程并发 (二) 了解 Thread 多线程并发...

  • java内存模型

    前言 在学习java多线程并发编程前,必须要了解java内存模型,只有了解java内存模型,才能知道为什么多线程并...

  • 进程与线程,并发与并行

    在进行Java多线程内容之前,需要简单先了解一下程序、进程、线程、并行与并发这些概念,弄懂了这个,对于学习多线程,...

  • 多线程--基础

    Java多线程 从本篇开始,笔者开始了一个新的专题,来说说Java多线程。 在讲解Java多线程之前,我们来了解下...

  • Java多线程

    Java多线程 从本篇开始,笔者开始了一个新的专题,来说说Java多线程。 在讲解Java多线程之前,我们来了解下...

  • Java 多线程 - Java 内存模型

    前言 学习Java多线程,要了解多线程可能出现的并发现象,了解Java内存模型的知识是必不可少的。 对学习到的重要...

  • Android开发 Java线程基础

    简介 本篇文章是带大家了解 Java多线程的基础知识.主要内容: 介绍多线程的概念, 了解多线程的优点, 状态, ...

  • Java并发编程(二)同步

    如果你的java基础较弱,或者不大了解java多线程请先看这篇文章java多线程(一)线程定义、状态和属性 同步一...

  • 线程池

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

网友评论

      本文标题:Java的多线程简单了解

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