文章目录
一.常用类
待填充
二.集合框架
待填充
三.IO流
待填充
四.多线程
多任务同时执行
多线程定义
方式一:继承Tread
1.声明线程类继承Tread类
2.重写run方法
3.调用start()方法
public class MyThread extends Thread{
@Override
public void run() {
for(int i=0; i<1000; i++) {
System.out.println("我在吃饭");
}
}
public static void main(String[] args) {
MyThread mt = new MyThread();
mt.start();
for(int i=0; i<1000; i++) {
System.out.println("我在看电视");
}
}
}
方式二:实现Runnable
1.定义MyRunnable类实现Runnable接口
2.实现Run()方法
3.创建线程对象,调用start()方法启动线程
此处使用了:静态代理模式
1)Thread与MyRunnable都实现了Runnable接口
2)Thread作为MyRunnable的代理
优点:
1)代理对象可以做真实对象做不了的事情
2)真实对象专注做自己的事情
public class MyRunnable implements Runnable{
@Override
public void run() {
for(int i=0; i<1000; i++) {
System.out.println("我在吃饭");
}
}
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
new Thread(mr).start();
for(int i=0; i<1000; i++) {
System.out.println("我在看电视");
}
}
}
方式三:实现Callable接口
1.实现Callable接口
2.重写call方法
3.开启线程
public class MyCallable implements Callable<Boolean>{
String name;
public MyCallable(String name) {
this.name = name;
}
@Override
public Boolean call() {
for(int i=0; i<1000; i++) {
System.out.println(name + ":在吃饭");
}
return true;
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
//声明Callable对象
MyCallable mc1 = new MyCallable("1");
MyCallable mc2 = new MyCallable("2");
MyCallable mc3 = new MyCallable("3");
//创建执行服务
ExecutorService ser = Executors.newFixedThreadPool(3);
//提交执行
Future<Boolean> r1 = ser.submit(mc1);
Future<Boolean> r2 = ser.submit(mc2);
Future<Boolean> r3 = ser.submit(mc3);
//获取结果
boolean rs1 = r1.get();
boolean rs2 = r2.get();
boolean rs3 = r3.get();
//关闭服务
ser.shutdown();
}
}
lambda表达式
函数式接口:只包含一个抽象方法的接口
Lambda表达式使用规则:
1.函数式接口才可以简化
2.参数类型可以去掉简化
3.只有一个参数可以去掉圆括号
4.函数体只有一行代码可以去掉花括号
public class Test{
public static void main(String[] args){
ILove love = null;
love = (a,b)->{
System.out.println(a);
System.out.println(b);
};
love.love(1, 2)