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

深入浅出Java多线程

Arthur JAVA开发工程师
难度入门
时长 4小时 0分
  • 线程要点
    查看全部
    0 采集 收起 来源:总结及展望

    2016-03-11

  • 互斥:关键数据在一个时间被一个线程使用。<br> wait set 类似于线程的休息室,访问共享数据的代码称为critical section。一个线程获取锁,然后进入临界区 ,发现某些天骄不满足,然后调用锁对象上的wait方法,然后线程释放掉锁资源,进入锁对象上的wait set。其他线程可以获取所资源,然后执行,完了以后调用notify,通知锁对象上的等待线程。 互斥的实现:synchronized(lockObj);java的语法保证的同一时间,只有一个线程获得lockObj 同步:wait(),notify(),notifyall(),都是属于object类,并不是thread类 notify()唤醒wait set中的一条线程,而notifyall()唤醒所有线程 同步是两个线程之间的一种交互的操作(一个线程发出消息另外一个线程响应)。
    查看全部
  • 线程停止:<br> 1、调用stop()方法会使线程戛然停止,而无法知道线程任务完成情况,官方已经不推荐使用。<br> 2、interrupt()方法设置线程的标识位,并在线程中判断标志位的状态,从而结束线程,但是当在线程中开启了另外的线程时,比如在线程中Tread.sleep(),这时候调用interrupt()方法设置标志位可能设置的是你想要停止的线程,也可能是想要停止的线程中的线程的标志位,因此interrupt()方法也并不能很好的结束线程。<br> 3、第三种方法,在线程的类声明一个volatile变量来记录线程的状态,相当于interrupt()方法那样,volatile关键字表示线程中的变量可以接受外部其他线程改变。因此可以在需要停止的地方设置volatile声明的变量的值设置为状态,并在执行run()函数里判断是否结束。 System.out.print();-------------格式化输出 ①.%d-----------输出整数 ②.%10.2f-------输出一个浮点数,小数点前有10位,小数点后为2位 ③.%n-----------换行
    查看全部
  • 怎样实现线程:继承Thread类或者实现runnable接口,实现里面有个run方法,调用start()启动线程,sleep()使线程进入睡眠状态,stop()停止线程。
    查看全部
  • 进程和线程的区别: 进程是一个程序的执行过程,一个进程可以包括多个线程;线程是程序中最小的执行单元,共享线程的所有资源。
    查看全部
  • 一个线程在阻塞状态下(例如sleep),此时interrupt的话,将会产生两个结果: 1、进程的interrupt状态被清除(cleard)而非被设置(set)。 2、sleep方法会抛出异常。 interrupt()方法只能设置interrupt标志位(且在线程阻塞情况下,标志位会被清除,更无法设置中断标志位),无法停止线程
    查看全部
  • 如何正确停止线程?--使用退出标志 如本文:volatile boolean keepRunning=true; 这样做的好处是:使得线程有机会使得一个完整的业务步骤被完整地执行,在执行完业务步骤后有充分的时间去做代码的清理工作,使得线程代码在实际中更安全即即使我们给keepRunning赋值false使线程结束时未完成的for循环仍会据需执行完毕
    查看全部
  • volatile是保证所有子线程里的变量都能同步到主内存里变量的值<br> stop方法使得线程戛然而止,完成了什么工作,哪些工作还没有做,都不知道,且清理工作也没有做,所以不是正确的停止线程方法,不要用stop()方法结束线程
    查看全部
  • 每一个java文件中只能有一个public类,但可以有很多其他类(不一定是内部类),但只有一个主函数入口<br> 两种方法实现线程:<br> 1、继承 Thread 类<br> class MyThread extends Thread{};<br> Thread myThread = new MyThread();<br> myThread.start();<br> 2、实现Runnable接口类<br> class MyRunnable implements Runnable{}<br> Thread myRunnable = new Thread(new MyRunnable)参数为一个接口对象或Thread myRunnable = new Thread(new MyRunnable,"线程的名字");线程的名字也可以之后用setName()方法定义 myRunnable.start();<br> 3、Thread启动后执行run()方法<br> 4、若实现接口通过Thread.currentThread().getName()方法获取当前线程名称,继承Thread则getName()方法获取当前线程。 处理器同一时间只能运行一个线程,当一个线程运行时,另一个线程等待,当地一个线程休眠时另一个线程会运行
    查看全部
  • 原子性和可见性
    查看全部
    0 采集 收起 来源:总结及展望

    2016-03-09

  • 线程基础,5点.
    查看全部
    0 采集 收起 来源:总结及展望

    2016-03-09

  • interrupt()方法:当一个线程调用某些方法(join(),sleep()等)而被阻塞时,interrupt()方法会使得中断状态被清除(isInterrupted()方法返回false)并使得当前线程抛出异常。
    查看全部
  • Thread常用方法
    查看全部
  • 停止线程
    查看全部
  • Thread常用方法
    查看全部

举报

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

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