为了账号安全,请及时绑定邮箱和手机立即绑定
  • java并发知识

    查看全部
    0 采集 收起 来源:总结及展望

    2019-05-03

  • jmm(java memory mode) happend-before

    locks candition

    线程安全

    deadlocks

    多线程交互模型

    java5兵法编程工具

    查看全部
    0 采集 收起 来源:总结及展望

    2019-05-03

  • 六、总结与展望

    1、学习到的知识点:

    a)如何创建线程以及线程的基本操作

    b)可见性以及volatile关键字

    c)争用条件

    d)线程的互斥synchronized

    e)线程的同步wait()/notify()/notifyall()

    2、扩展建议

    a)Java Memory Mode

        JMM描述了Java线程如何通过内存进行交互

        happens-before原则

        如何通过synchronize,volatile,final来实现happens-before原则

    b)Locks  &   Condition   对象

        Java锁机制和等待条件的高层实现

        java.util.concurrent.locks

    c)线程的安全性

        原子性和可见性

        java.util.concurrent.atomic

        synchronized  &   volatile

        DeadLocks

    d)多线程编程常用的交互模型

        Producer-Consumer模型

        Read-Write  Lock模型

        Future模型

        Worker  Thread模型

    e)Java5中并发编程工具

        java.util.concurrent

        线程池ExecutorService

        Callable & Future

        BlockingQueue



    查看全部
    0 采集 收起 来源:总结及展望

    2019-04-28

  • 一、线程的特点:
    进程是资源分配的最小单位,一个进程中有1—n个线程,线程共享资源,同一时刻只能有一个线程占领CPU
    二、多线程:之间争用资源,多线程之间同步与互斥<br>
    1,多线程之间的互斥(加锁实现):同一时间,只能有一个线程访问临界区(防止线程之间争用条件造成的“能量损失”)[对该临界资源进行加锁,表示现在只能由该线程进行访问]<br>
    2,多线程之间的同步(线程的等待和唤醒:wait()+notifyAll()):通信机制;一个线程完成,以某种方式通知其他线程可以访问临界区<br>
    3,锁:private final Object lockObj=new Object();

    synchronized(lockObj) {}线程互斥

    三、重要的话
    线程之间的互斥:通过加锁实现:线程访问临界区的代码放在一个代码块中,加锁实现
    线程之间的同步:通过wait()+notify()的通信机制来实现
    wait()和notifyAll()是在线程同步的时候使用的一对方法

    查看全部
  • Java线程——线程交互——争用条件 

    1、当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件 

    2、原因是,每个线程在操作数据时,会先将数据初值读【取到自己获得的内存中】,然后在内存中进行运算后,重新赋值到数据。 

    3、争用条件:线程1在还【未重新将值赋回去时】,线程1阻塞,线程2开始访问


    查看全部
  • 调用interrupt()方法,立刻改变的是中断状态,但如果不是在阻塞态,就不会抛出异常;如果在进入阻塞态后,中断状态为已中断,就会立刻抛出异常

    查看全部
  • join就是join所在的线程加入进来,阻塞主线程,直至join所在的线程执行完毕,而在此期间,主线程和子线程是同时无顺序运行的。
    yiled 到了当前线程执行的时候,当前线程从执行状态变为就绪状态,cpu会从众多就绪状态中选择,当前线程还是有可能执行的。

    查看全部
  • Thread.currentThread().getName();获取名称。volatile;可见性,java的关键字(保证了线程可以正确的读取         其他线程写入的值)Thread.yield();让出线程时间。Thread.sleep();线程休眠join();使其他线程等待当前线程终止

    查看全部
  • java线程中start和run方法的区别 
    Start:
         用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

    Run:
         run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

    总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

    1. 在同一时间,同一处理器或同一个核只能运行一条线程,当一条线程休眠之后,另一条线程才获得了我们处理器的时间
      2.Runnable接口之中没有getName方法,我们可以使用Thread的静态方法currentThreat().getName()获取该对象的名字。
      3.若实现接口通过Thread.currentThread().getName()方法获取当前线程名称,继承Thread则getName()方法获取当前线程名称

    继承Thread和实现Runnable其区别主要在于共享数据,Runnable接口是可以共享数据的,多个Thread可以同时加载一个Runnable,当各自Thread获得CPU时间片的时候开始运行Runnable,Runnable里面的资源被共享。

    不管是继承Thread还是实现Runnable接口我们都可以创建线程。在实际开发中大多数情况下是实现Runnable接口的,因为它可以共享数据。


    查看全部
  • Thread常用方法

    查看全部
  • thread类和runnable接口 都是lang包下面的

    查看全部
  • 1、进程 : 程序(任务)的执行过程 <动态性>

                     持有资源(共享内存,共享文件)和线程 <载体>

    2、线程 : 系统中最小的执行单元

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

                     线程共享进行的资源

    3、线程的交互 : (1)互斥 、(2) 同步


    查看全部
  • interrupt
    查看全部
  • interuptor 初衷不是用于停止线程
    查看全部
  • 不建议使用stop方法
    查看全部

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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