线程池
对线程问题的解决方案
1.线程的创建和销毁交给线程池
2.线程的数据需要控制最小线程数,最大线程数
线程池实际上就是一个ArrayList
List<Thread> threads=new ArrayList<Thread>();
for(int i=0; i<5; i++){
threa.add(new Thread(r));
}
get(i)
remove();
完成任务后
threads.add(还回来)
网络编程
TCP 分服务器和客户端的稳固链接
UDP 数据包的长度包括报头和数据部分,报头长度固定,数据部分可变,在用Scoket中有限定
1.只分接受端和发送端,不分服务器和客户端
2.不安全的链接
3.步骤
发送端:
接收端 创建套接字要加端口号
lambda表达式
1.语法:(形式参数)->{代码块}
2.作用代替匿名内部类
3.关键
A.接口
B.接口必须有且只能有一个方法
C.调用的时候参数为接口类型
4.步骤
a.创建接口
b.在接口中添加唯一的方法
c.在测试类中创建方法调用接口对象(接口本身没有对象,只能调用接口的实现类的对象)
interface Eatabl{void eat();}
...测试类
public static void useEatable(Eatable e){e.eat();}...main
useEatable(Eatable的实现类对象);
实现类对象
1.编写一个实现类,然后new 这个实现类
2.直接new 接口,写匿名类实现
3.写lambda表达式
ArrayList.forEach(接口类型)