三种创建方式
- Thread class(继承类)//需要重写run方法Runnable (接口)Callable(接口) !!!
主方法需要调度的是start方法,不是run方法
Callable接口的好处
- 可以定义返回值可以抛出异常
静态代理模式:
- 真实对象和代理对象都要实现同一个接口代理对象要代理真实角色
代理对象可以代替真实对象做事情
真实对象可以做自己喜欢做的事情
lamba表达式的符号表示为 ->,其基本结构形式为:(param1,param2,param3…)-> { }
如果只有一个参数,可以不加小括号,只有一行执行代码,也可以没有箭头后面的大括号,比如 i ->System.Out.Println(i);
如果没有参数 ,只需要一个小括号即可,比如:()-> System.Out.Println(“hello”);
表达式只能有一行代码的情况下,才能简化为一行如果有多行,必修用代码块包裹
前提是接口为函数式接口(接口只有一个方法)
多个参数也可以去掉参数类型,要去掉就都去掉
可以通过接口创建对象
匿名内部类,没有类 的名称,必须借助接口或父类
测试stop
- 建议线程正常停止–>利用次数。不建议死循环,建议使用标志位 -->设置一个标志位不要使用stop或者destroy等过时或jdk不建议的方法让线程自己停止下来,
没一个对象都有一把锁,sleep不会释放锁
礼让线程:礼让不一定成功,看CPG心情
切记,当线程进行循环的时候,要记得更新线程的状态
线程死亡之后不能启动
优先级高的代码块可以先运行,但是并不是绝对的按照优先级大小来运行,即性能倒置//先设置优先级,在启动
sleep可以放大问题的发生性
synchronized默认锁定的是this,可以通过同步块锁定一个对象
集合加泛型进行约束
CopyonWriteArrayList (JUIC并发包 )
线程池:ExecutorService 和 Executors



