为了账号安全,请及时绑定邮箱和手机立即绑定
  • 1:volatile关键字——表示此线程可以正确的读取其他线程写入的值,就是创建一个线程A,并且在线程A中有一个变量是使用volatile关键字修饰的,那么在线程B中修改线程A中的这个变量的值,可以保证线程A能够正确的读取 2:yield()方法——是指当前线程让出处理,允许下一个线程占用处理器的时间执行。
    查看全部
  • 互斥:关键数据在一个时间被一个线程使用。<br> wait set 类似于线程的休息室,访问共享数据的代码称为critical section。一个线程获取锁,然后进入临界区 ,发现某些天骄不满足,然后调用锁对象上的wait方法,然后线程释放掉锁资源,进入锁对象上的wait set。其他线程可以获取所资源,然后执行,完了以后调用notify,通知锁对象上的等待线程。 互斥的实现:synchronized(lockObj);java的语法保证的同一时间,只有一个线程获得lockObj 同步:wait(),notify(),notifyall(),都是属于object类,并不是thread类 notify()唤醒wait set中的一条线程,而notifyall()唤醒所有线程 同步是两个线程之间的一种交互的操作(一个线程发出消息另外一个线程响应)。
    查看全部
  • Thread类常用方法
    查看全部
  • 1:线程的特点,共享同一进程的资源,同一时刻只能有一个线程占用CPU<br> 2:由于线程有如上的特点,所以,就会存在多个线程争抢资源的现象,就会存在争用条件这种现象<br> 3:为了让线程能够正确的运行,不破坏共享的数据,所以,就产生了同步和互斥的两种线程运行的机制<br> 4:线程的互斥指:线程的运行隔离开来,互不影响,使用synchronized关键字实现互斥行为,此关键字即可以出现在方法体之上也可以出现在方法体内,以一种块的形式出现,在此代码块中有线程的等待和唤醒动作,用于支持线程的同步控制<br> 5:线程的同步指:线程的运行有相互的通信控制,运行完一个在正确的运行另一个
    查看全部
  • Java线程——线程交互——争用条件 1、当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件 2、原因是,每个线程在操作数据时,会先将数据初值读【取到自己获得的内存中】,然后在内存中进行运算后,重新赋值到数据。 3、争用条件:线程1在还【未重新将值赋回去时】,线程1阻塞,线程2开始访问该数据,然后进行了修改,之后被阻塞的线程1再获得资源,而将之前计算的值覆盖掉线程2所修改的值,就出现了数据丢失情况 Ps:syso...printf();//格式输出,其中%n相当于换行。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 本次课程主要讲解了线程中的两个有趣的地方: 1:volatile关键字——表示此线程可以正确的读取其他线程写入的值,就是创建一个线程A,并且在线程A中有一个变量是使用volatile关键字修饰的,那么在线程B中修改线程A中的这个变量的值,可以保证现正A能够正确的读取 2:yield()方法——是指当前线程让出处理,允许下一个线程占用处理器的时间执行。
    查看全部
  • interrupt()--初衷并不是用于停止线程 在调用sleep()或者join()的时候,一旦其他线程调用interrupt(),它将会收到一个异常,这些被阻塞的线程因为某些原因需要被唤醒,比如外部发生了中断而需要响应,这时就采用抛出异常的方式来使其作出响应。总而言之,interrupt()方法并不能正确地停止进程 一个线程在阻塞状态下(例如sleep),此时interrupt的话,将会产生两个结果: 1、进程的interrupt状态被清除(cleard)而非被设置(set)。 2、sleep方法会抛出异常。
    查看全部
  • happens-before原则 从JDK5开始,Java使用新的JSR -133内存模型。JSR-133提出了happens-before的概念,通过这个概念来阐述操作之间的内存可见性。 如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。这里提到的两个操作既可以是在一个线程之内,也可以是在不同线程之间。两个操作之间具有happens-before关系,并不意味着前一个操作必须要在后一个操作之前执行!happens-before仅仅要求前一个操作(执行的结果)对后一个操作可见。 常见的满足happens- before原则的语法现象: 对象加锁:对一个监视器锁的解锁,happens-before 于随后对这个监视器锁的加锁。 volatile变量:对一个volatile域的写,happens-before 于任意后续对这个volatile域的读。
    查看全部
  • interupter()仅仅只是中断当前进程的状态,如果此时进程在sleep(),wait().它将会中断他,回到运行状态。当再次调用sleep,wait此时中断的标记会被打断。
    查看全部
  • 互斥的实现:synchronized(lockObj);java的语法保证的同一时间,只有一个线程获得lockObj 同步:wait(),notify(),notifyall(),都是属于object类,并不是thread类 notify()唤醒wait set中的一条线程,而notifyall()唤醒所有线程 同步是两个线程之间的一种交互的操作(一个线程发出消息另外一个线程响应)。 同步的实现:wait();notify();notifyAll();这三个方法都是Object对象的成员函数。
    查看全部
  • thread.yield(),让出处理器资源 thread.sleep(),休眠一段时间 thread.join(),让其他线程停止,直到本线程结束。
    查看全部
  • 线程在java中的体现为:Thread类和Runnable接口,重写run方法 通过void join()使其他线程等待当前线程终止。可以把最大等待时间作为参数 yield方法是让当前线程释放处理器资源 currentThread()可以返回当前运行的线程引用
    查看全部
  • join()方法。等待该线程结束后,当前进程才能继续执行。 比如,只有当某一线程执行完,才能执行另一个线程的后续任务。
    查看全部
  • //冒泡排序 public static void bubbleSort(int[] arr){ for(int x=0;x<arr.length-1;x++){ for(int y=0;y<arr.length-1-x;y++){ if(arr[y]>arr[y+1]){ int temp=arr[y]; arr[y]=arr[y+1]; arr[y+1]=temp; } } } }
    查看全部
  • //选择排序 public static void selectSort(int[] arr){ for(int x=0;x<arr.length;x++){ for(int y=x+1;y<arr.length;y++){ if(arr[x]>arr[y]){ int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } } } }
    查看全部

举报

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

微信扫码,参与3人拼团

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

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