为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
深入浅出Java多线程_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

深入浅出Java多线程

Arthur JAVA开发工程师
难度入门
时长 4小时 0分
  • @Java线程——线程交互——互斥与同步 一、互斥 1、同一时间,只能有一个线程访问数据 二、同步 1、是一种通信机制,一个线程操作完成后,以某种方式通知其他线程 三、实现方法 1、【互斥】构建锁对象(Object objLock),通过synchronized(lockObj){ 互斥的代码块 } 2、加锁操作会开销系统资源,降低效率。 3、在某线程的条件不满足任务时,使用lockObj.wait()对线程进行阻挡,防止其继续竞争CPU资源,滞留在wait set中,等待唤醒,【唤醒后继续完成业务】 4、【同步】在某一代码正确执行完业务后,通过lockObj.notifyAll()唤醒所有在lockObj对象等待的线程
    查看全部
  • 没搞懂啊 蒙逼
    查看全部
  • @Java线程——线程交互——争用条件 1、当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件 2、原因是,每个线程在操作数据时,会先将数据初值读【取到自己获得的内存中】,然后在内存中进行运算后,重新赋值到数据。 3、争用条件:线程1在还【未重新将值赋回去时】,线程1阻塞,线程2开始访问该数据,然后进行了修改,之后被阻塞的线程1再获得资源,而将之前计算的值覆盖掉线程2所修改的值,就出现了数据丢失情况
    查看全部
  • java对线程的支持;
    查看全部
  • 进程;程序的执行过程 ,持有资源共享文件和内存和线程,它是动态性的,进程是一个载体。线程是系统中最最小的单元。 线程交互方式;互斥和同步。
    查看全部
  • 线程执行过程中几个重要的方法 sleep(); 让线程休眠一段时间, yield(); 让出当前线程的执行权限,让线程调度重新选择线程进行执行; join(); 让其他线程都停止,等待当前线程执行完毕。 当某个线程使用join()方法加入到另一个线程时,另一个线程会等待该线程执行完毕后再继续执行。 程咬金线程通过join()方法加入到舞台线程,所以只有舞台线程会等待。隋军和农民军线程的结束,是在舞台线程中加入armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false;然后舞台线程又sleep(2000),让隋军和农民军线程结束最后一轮(while()循环),让程咬金线程独自执行
    查看全部
  • 线程的交互:互斥与同步 互斥:在同一时间只能有一条线程对关键数据或临界区进行操作 同步:线程之间的一种通信机制 一条线程做了一件事情,然后用某种方式去告诉其它线程:"我做完了" synchronized关键字实现互斥行为,既可以出现在方法体之上也可以出现在方法体内,以一种块的形式出现。 然后通过lockObject的wait方法(注意:wait的线程被存放在wait set 中)和notifyAll方法实现同步。 步骤: 1.互斥:同一时间,只能有一个线程访问数据 2.同步:通信机制;一个线程完成,以某种方式通知其他线程 3.锁的概念:private final Object lockObj = new Object(); 4.互斥实现方式:synchronized关键字 synchronized(lockObj){---执行代码----}加锁操作 lockObj.wait();线程等待状态,以避免线程持续申请锁,不去竞争cpu资源 lockObj.notifyAll();唤醒所有lockObj对象上等待的线程
    查看全部
  • @Java线程——线程交互——争用条件 1、当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件 2、原因是,每个线程在操作数据时,会先将数据初值读【取到自己获得的内存中】,然后在内存中进行运算后,重新赋值到数据。 3、争用条件:线程1在还【未重新将值赋回去时】,线程1阻塞,线程2开始访问该数据,然后进行了修改,之后被阻塞的线程1再获得资源,而将之前计算的值覆盖掉线程2所修改的值,就出现了数据丢失情况
    查看全部
  • 线程常用方法 1.获取线程名称:getName(); 2.取得当前线程对象:currentThread(); 3.判断是否启动:isAlive(); 4.强行运行:join(); 5.线程休眠:sleep(); 6.线程礼让:yield()
    查看全部
  • @Java线程——如何正确停止线程 一、错误一:stop()方法 1、not stop:stop()方法会使线程戛然而止 2、使程序突然中止,无法完成完整的业务步骤,也无法进行清理工作 二、错误二:interrupt()方法 1、interrupt()方法只能设置interrupt标志位(且在线程阻塞情况下,标志位会被清除,更无法设置中断标志位),无法停止线程 三、正确方法:设置退出标志 1、使用退出标志位来停止while循环 2、完成最后一次业务后跳出while循环后,之后进行一些清理工作
    查看全部
  • 很基础的东西
    查看全部
    0 采集 收起 来源:慕课感言

    2016-10-24

  • 线程执行过程中几个重要的方法 sleep(); 让线程休眠一段时间, yield(); 让出当前线程的执行权限,让线程调度重新选择线程进行执行; join(); 让其他线程都停止,等待当前线程执行完毕。 当某个线程使用join()方法加入到另一个线程时,另一个线程会等待该线程执行完毕后再继续执行。 程咬金线程通过join()方法加入到舞台线程,所以只有舞台线程会等待。隋军和农民军线程的结束,是在舞台线程中加入armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false;然后舞台线程又sleep(2000),让隋军和农民军线程结束最后一轮(while()循环),让程咬金线程独自执行
    查看全部
  • Thread中start()方法,join()方法,sleep()方法,volatite作用 Java Thread中,start()方法,等其他代码(Thread.join()和Thread.sleep()除外)执行完后再执行它。 Java Thread中, join()方法主要是让调用该方法的thread完成run方法里面的东西后, 再执行join()方法后面的代码。 Java Thread中, sleep()方法主要是让调用该方法的thread完成run方法里面的东西后且等待休眠的时候结束(唤醒), 再执行sleep()方法后面的代码。 一. volatite 简述 Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的. 二. volatite 线程安全? volatile 变量对所有线程是立即可见的,对 volatile 变量所有的写操作都能立即反应到 其他线程之中,换句话说:volatile 变量在各个线程中是一致的,所以基于 volatile 变量的运算是线程安全的。这句话论据貌似没有错,论点确实错的
    查看全部
  • volatile 关键字 保证了线程可以正确地读取其他线程写入的值,如果不写成volatile,由于可见性的问题,当前线程有可能不能读到这个值//可见性JMM(JAVA内存模型)happens-before原则、可见性原则 用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的值 Thread.yield();//让出处理器时间,公平竞争
    查看全部
  • Thread常用方法
    查看全部

举报

0/150
提交
取消
课程须知
本课程的学习,需要小伙伴们具有面向对象基础知识及 Java 语言基础。如果您是新手,建议先移步 《Java入门第一季》和《Java入门第二季》
老师告诉你能学到什么?
1、Java 中如何使用线程 2、什么是争用条件 3、线程如何交互
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!