为了账号安全,请及时绑定邮箱和手机立即绑定
  • 线程实现方式之一的Thread常用方法:

    https://img1.sycdn.imooc.com//5c668163000179de08400478.jpg

    查看全部
  • 进程:程序(任务)执行的过程,具有动态性,比如运行qq。持有资源(共享内存,共享文件)和线程,进程是资源的载体也是线程的载体。

    线程:系统中执行的最小单元。同一进程中有多个线程,线程共享进程的资源。

    eg:一个班级比作进程,每个同学比作线程。同学之间可以互相合作完成任务,同时也具有竞争性,互斥。https://img1.sycdn.imooc.com//5c667e840001594906890405.jpg

    查看全部
  • Thread常用的方法

    查看全部
  • Thread常用方法

    https://img1.sycdn.imooc.com//5c3df2190001a53b12410702.jpg

    查看全部
  • Class Thread、interface Runnable

    均含有 run方法

    1,Thread

    https://img1.sycdn.imooc.com//5c32ae1c00010d4012580703.jpg

    查看全部
  • 进程:程序(任务)的执行过程

    持有资源(共享内存、共享文件)和线程


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

    同一进程中有多个线程

    线程共享进程的资源


    线程之间的关系:互斥、同步

    查看全部
  • 1:线程的互斥是指,在同一时间关键数据只能有一个线程访问<br>
    2:线程互斥的实现有synchronized关键字来实现,类似于给对应的代码加锁,只有获得锁的线程才能运行此段代码
    3:线程的同步是指,线程间的一种通信控制,一个线程完成了某事后通知另一个线程可以进行下面的事情了
    4:线程同的实现有wait(),notify(),notifyall()这几个方法来实现,这几个方法都是属于object


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

    查看全部
  • 线程常用方法

    1.获取线程名称:getName();
    2.取得当前线程对象:currentThread();
    3.判断是否启动:isAlive();
    4.强行运行:join();
    5.线程休眠:sleep();
    6.线程礼让:yield();

    线程停止:
    1、调用stop()方法会使线程戛然停止,而无法知道线程任务完成情况,官方已经不推荐使用。
    2、interrupt()方法设置线程的标识位,并在线程中判断标志位的状态,从而结束线程,但是当在线程中开启了另外的线程时,比如在线程中Tread.sleep(),这时候调用interrupt()方法设置标志位可能设置的是你想要停止的线程,也可能是想要停止的线程中的线程的标志位,因此interrupt()方法也并不能很好的结束线程。
    3、第三种方法,在线程的类声明一个volatile变量来记录线程的状态,相当于interrupt()方法那样,volatile关键字表示线程中的变量可以接受外部其他线程改变。因此可以在需要停止的地方设置volatile声明的变量的值设置为状态,并在执行run()函数里判断是否结束。
    什么时候使用thread 什么时候使用runnable
    其实两种方式效果一样,但推荐使用runnable
    因为Java是单继承,继承了thread就不能继承其他的类
    而实现runnable接口的话,扩展性要好很多


    查看全部
  • 如何正确停止线程?
    --使用退出标志
    如本文:volatile boolean keepRunning=true;

    这样做的好处是:使得线程有机会使得一个完整的业务步骤被完整地执行,在执行完业务步骤后有充分的时间去做代码的清理工作,使得线程代码在实际中更安全

    查看全部
  • stop方法使得线程戛然而止,完成了什么工作,哪些工作还没有做,都不知道,且清理工作也没有做,所以不是正确的停止线程方法
    正确的停止线程方法是,在线程执行中设置状态标识,通过控制标识来控制线程正常完整的执行结束线程
    volatile是保证所有子线程里的变量都能同步到主内存里变量的值
    不要用stop()方法结束线程

    查看全部
  • yield()让出当前线程的执行权限,随机选择线程执行。
    join()优先执行该线程,其他线程都暂停。使同级其他线程停下来,等待调用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接口的,因为它可以共享数据。


    查看全部
  • 线程的创建:1.       Thread()

    线程的方法:1.     start()-----启动线程

                         2.     sleep()----休眠

                         3.     join()-------是其他线程等待当前线程终止

                          4.    yield()-------当前运行线程释放处理器资源

    获取线程引用:    Thread   currentThread()----------返回当前运行的线                                                                               程引用     


    查看全部
  • https://img1.sycdn.imooc.com//5c2c35c5000185ec12530684.jpgThread常用方法

    查看全部

举报

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

微信扫码,参与3人拼团

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

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