java复习-8

java复习-8

多线程

process:相当于开着qq音乐和网易云

Thread:qq音乐中既可以听歌又可以倒计时关闭

在这里插入图片描述

在这里插入图片描述

线程创建

三种创建方式

1.继承Thread类

2.实现Runnable接口

3.实现Callable接口

ps:其中Thread类实现了Runnable


//线程开启不一定立即执行由cpu调度执行
public class TestTHread extends Thread {
	
		@Override
		public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("xainc"+i);
		}
		}
	
		public static void main(String[] args) {
			TestTHread thread=new TestTHread();
			thread.start();//开启线程
			
			for (int i = 0; i < 10; i++) {
				System.out.println("main"+i);
			}
		}
	
}

//实现Runnable,重写run方法,执行线程丢入runable接口实现类调用start
public class Testrunable implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i <10; i++) {
			System.out.println("xiancheng"+i);
		}
		
	}

	
	public static void main(String[] args) {
		Testrunable test=new Testrunable();
		Thread thread=new Thread(test);
		thread.start();
		for (int i = 0; i < 10; i++) {
			System.out.println(i);
		}
	}
	
}

public class AddCallable {
	public static void main(String[] args) {
		long begin = System.currentTimeMillis();
		ExecutorService threadPool = Executors.newCachedThreadPool();
		AddTask task01 = new AddTask("Task-01", 1, 50);
		AddTask task02 = new AddTask("Task-02", 51, 100);
		//得到的结果集
		Future<Long> resultSet01 = threadPool.submit(task01);
		Future<Long> resultSet02 = threadPool.submit(task02);
		try {
			System.out.println("最后的结果是:"+(resultSet01.get()+resultSet02.get()));
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
		finally{
			threadPool.shutdown();
		}
		System.out.println(System.currentTimeMillis() - begin);
	}
};
 
/**
 * @author:xxx
 * @TODO:泛型中的Long表示返回的类型
 */
class AddTask implements Callable<Long> {
	private String name;
	private long begin;
	private long end;
 
	public AddTask(String name, long begin, long end) {
		this.name = name;
		this.begin = begin;
		this.end = end;
	}
 
	@Override
	public Long call() throws Exception {
		System.out.println(Thread.currentThread().getName());
		System.out.println(name + " 执行中.......");
		long sum = 0;
		for (long i = begin; i <= end; i++) {
			sum += i;
			System.out.println(name+" "+i);
		}
		return sum;
	}
};

静态代理模式(狂神说)

  • 抽象角色 : 一般使用接口或者抽象类来实现
  • 真实角色 : 被代理的角色
  • 代理角色 : 代理真实角色 ; 代理真实角色后 , 一般会做一些附属的操作 .
  • 客户 : 使用代理角色来进行一些操作 .

在这里插入图片描述

1.Rent.java

在这里插入图片描述

2.Host.java

在这里插入图片描述

3.Client.java

在这里插入图片描述

4.Proxy.java

在这里插入图片描述
在这里插入图片描述

Lamda表达式

函数式接口:一个接口只包含一个方法

对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。

public class TestLambda {
//3静态内部类
static	class Like2   implements Ilike{
		
		@Override
		public void lambda() {

			System.out.println("i like2");
		}
	}
	public static void main(String[] args) {
		Ilike like=new Like();
		like.lambda();
		
		like=new Like2();
		like.lambda();
		
		//4局部门内部类
			class Like3   implements Ilike{
			
			@Override
			public void lambda() {

				System.out.println("i like3");
			}
		}
			

			like=new Like3();
			like.lambda();
			
			//5匿名内部类,没有类的名称,借助接口或父类
			like=new Ilike() {

				@Override
				public void lambda() {
					System.out.println("i like4");
					
				}
				
			};
			like.lambda();
			//6.lambda简化
			like=()->{
				System.out.println("i like5");
			};
			like.lambda();
	}
}
//1定义一个函数式接口
interface Ilike{
	void lambda();
}

//2实现类
class Like   implements Ilike{
	
	@Override
	public void lambda() {

		System.out.println("i like1");
	}
}
结果
i like1
i like2
i like3
i like4
i like5
public class TestLambda1 {

	public static void main(String[] args) {
		
		Ilove love=(int a)->{
			System.out.println("i love"+a);
		};
		
		//简化
		love=(a)->{
			System.out.println("i love"+a);
		};
		love= a->{
			System.out.println("i love"+a);
		};
		
		
		love.love(521);
	}
	
	interface Ilove{
		void love(int a);
	}
}

线程状态

在这里插入图片描述

sleep

在这里插入图片描述

join

合并线程,等待此线程执行完之后其他线程才执行

public class TestJoin implements Runnable {

	@Override
	public void run() {
		for (int i = 0; i < 1000; i++) {
		System.out.println("xainc vip "+i);
		}
	}
	public static void main(String[] args) throws InterruptedException {
		TestJoin test=new TestJoin();
		Thread thread=new Thread(test);
		thread.start();
		for (int i = 0; i <1000; i++) {
			if (i==200) {
				thread.join();
			}
			System.out.println(i);
		}
		
	}

}

);
		}
	}
	public static void main(String[] args) throws InterruptedException {
		TestJoin test=new TestJoin();
		Thread thread=new Thread(test);
		thread.start();
		for (int i = 0; i <1000; i++) {
			if (i==200) {
				thread.join();
			}
			System.out.println(i);
		}
		
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值