上面是第5讲
4:55
11-构造thread的时候,传入stacksize代表该线程占用的stack大小如果没指定,默认是0,0代表会忽略该参数,该参数会被jni函数使用;该参数和平台有关
5:54
11-所以stacksize一般用虚拟机参数指定。
6:50
14-join..线程A里调用线程B, 即B.join.也就是说B join进来了。那就是A要等B完了再继续A.
7:38
13-那个java资源管理工具叫jconsole
7:48
15-t.interrupt()方法在线程执行sleep,wait,join时,会受到InterruptException,在其他时候是收不到的,只是会设置interrupt标识
8:13
6-还记得售票窗口的例子吗?为了实现共享变量的一致性,可以将线程逻辑部分,即run方法通过实现runnable接口抽离出来,这样启动多个线程的时候,跑的是单个的线程逻辑哦
10:46
20-视频任务,修改售票示例,确保正确
11:05
16-线程中判断bool值来决定是否退出线程是好的,但是有可能线程中在执行一个很长时间的操作, 并没有及时去判断bool值,这个时候如何及时的打断这个线程呢?详见17节
11:47
17-线程A中设置线程B为守护线程,然后A中执行B.join这样就能保持两个线程一直存在
13:55
14-join是有毫秒参数API的
14:09
多线程里如果需要共享变量,比如计数值,最简单的办法是将该变量设为static即可
14:18
17-这节有一个终止超时线程的方法,代码可以记忆一下
15:17
12-daemon线程会在其他程序退出后退出,所以自己创建的休眠1分钟的线程如果设置成了守护线程,它可能并不会sleep1分钟就会退出
15:42
14-在main线程中执行Thread.currentThread().join();可以让main线程一直执行;因为该句的含义是在等main结束,但是main没结束,因为他在等自己结束
16:47
7-实现runnable接口创建线程的方式是使用了策略模式,所谓的策略是指将具体的实现逻辑封装到了runnable中
17:49
12-守护线程常用场景是心跳线程
21:58
15-t.interrupt();要特别注意中断的是谁
22:08
Thread的创建使用了模板方法模式,可以去回顾一下该设计模式
23:56
在jvm启动后,实际有多个线程,但是至少有一个非守护线程
24:31
线程的生命周期分为new runnable running block termate
25:48
12-守护线程里再建一个守护线程,都是遵循之前的原则,没有非活跃的非守护进程,守护线程都会退出
29:25
9-stackSize这一节其实没什么内容