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


    查看全部
  • 1.如果线程在之前被join()、sleep()或者wait()等方法阻塞,interrrupt使用会产生两种结果:一种是清除中断状态,一种是获得interruptedException

    查看全部
  • mrCheng.join()方法解释:

    当主线程调用了其他线程的join方法时,必须执行完子线程中的代码才能接着执行主线程下面的方法.

    查看全部
  • 为了保证多个线程可以正确读取其他线程写入的值,共享资源需要加volatile关键字

    volatile boolean keepRunning;


    查看全部
  • Thread常用方法

    查看全部
  • 1,不能使用interrupt()方法停止线程,它是中断线程;

    2,如果一个线程因为调用某些方法(join(),sleep(),wait())被阻塞时,interrupt()方法会使得线程的中断状态被清除,并且当前线程会收到异常;

    查看全部
  • 正确退出线程:使用flag

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

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

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

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

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

    查看全部
  • 互斥:关键数据在一个时间被一个线程使用。
    同步实现:object 方法wait()/notify()/notifyAll();
    wait set 类似于线程的休息室,访问共享数据的代码称为critical section。一个线程获取锁,然后进入临界区 ,发现某些条件不满足,然后调用锁对象上的wait方法,然后线程释放锁资源,进入锁对象上的wait set。其他线程可以获取所资源,然后执行,完了以后调用notify()/notifyAll(),唤醒锁对象上的一个/全部等待线程,有机会在当前线程离开临界资源释放锁之后竞争临界资源的锁对象。

    查看全部
  • Stage舞台继承了Thread类,其实它相当于一个总线程,用于控制多个线程协同工作的,yield()方法是让当前线程可以让出处理器,让多条线程可以同时进行的关键,join()方法就相当于等待线程,由于各个线程独立运行互不干扰,当它们同时进行的时候,会出现某个线程过早结束的情况,本例中的Stage总线程如果不在"程咬金"线程出现的时候使用join方法,它就会在启动了"程咬金"线程之后运行结束,导致舞台剧过早结束,所以用join方法来等待"程咬金"线程,只有当使用了join方法的线程运行完毕了之后,也就是等待"程咬金"线程运行完毕以后,才是舞台剧的谢幕

    查看全部
  • 进程
    1.程序(任务)的执行过程。进程是动态性的,放在磁盘文件中的文件并不是进程,只有在运行状态的才可称之为进程。
    2.持有资源(共享内存,共享文件)和线程。进程是资源和线程的载体

    线程
    1.线程是系统中最小的执行单元
    2.同一进程中有多个线程
    3.线程共享进程的资源


    线程的交互:多个线程需要正确的通信才能进行工作。
    交互方式有互斥和同步两种。

    查看全部
  • 正确的停止线程的运行

            1:首先使用线程自带的方法stop(),是不正确的,原因如下:此方法会导致线程戛然而止,我们不清楚线程完成了什么,没完成什么,也没有时间来完成对应的线程运行的清理工作。

            2:正确停止线程的方法是,在线程执行中设置状态标识,通过控制此状态标识,来控制线程的正常完整的结束,另外,volatile关键字是保证线程变量对外可见的标志,通过此关键字修饰的状态变量,才能在别的线程中被正确的赋值。

    查看全部
  • Thread常用方法
    sleep(long millis, int nanos) 线程休眠 millis休眠的时间,单位是毫秒,可以精确到纳秒
    join(long millis, int nanos) 调用线程 可以让其它线程等待自己运行,直到结束
    static void yield() 当前运行线程释放处理器资源并且重新去竞争处理器资源
    static Thread currentThread() 返回当前正在处理器上运行的线程的引用
    重载的几个形式
    1.没有参数,指明了其它的线程一定要等待正在执行的线程执行完毕之后,都会获得运行的机会
    2.nanos是要把精确度改变,可改成纳秒

    查看全部
  • Thread actress = new Thread(new Actress(), "Ms. Runnable");

    传入实现了Runnable接口的对像,和线程名称

    查看全部

举报

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

微信扫码,参与3人拼团

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

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