sleep和wait的区别、jdk1.8新特性

本文详细介绍了Java中sleep和wait方法的区别,sleep不会释放锁,而wait会。同时,文章讲解了线程的生命周期、线程池的创建方式与四种拒绝策略。在JDK1.8的新特性部分,提到了default关键字用于接口的默认方法实现,Lambda表达式的使用,以及Stream API如何简化集合操作,特别是其支持串行和并行处理的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sleep和wait的区别:
  • sleep 和 wait 的区别
  • sleep在阻塞的过程中不会释放锁
  • wait在阻塞的过程中会释放锁
class Test implements Runnable{
	private Object object;
	public Test() {}
	public Test(Object object) {
		this.object = object;
	}
	@Override
	public void run() {
		
		while(true) {
			synchronized (object) {
				try {
					System.out.println("当前---"+Thread.currentThread().getName()+"---在执行");
					//Thread.sleep(1000);//睡眠的时候不释放锁  sleep在阻塞的过程中不会释放锁
					object.notify(); //后来的唤醒之前睡眠的线程
					object.wait(); //睡眠  wait在阻塞的过程中会释放锁
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println("当前"+Thread.currentThread().getName()+"---出来了");
			}

		}
	}
}

线程的生命周期 : 创建----就绪—执行—销毁 中间有个阻塞

线程池的概念:

newSingleThreadExecutor创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
newFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool创建一个可定期或者延时执行任务的定长线程池,支持定时及周期性任务执行
newCachedThreadPoo创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程

用于管理线程的四中方法:

newSingleThreadExecutor创建单个线程去执行所有的任务,超出的任务需要进行排队(FIFO)
newFixedThreadPool创建指定大小的线程池,任务过多时需要排队
newScheduledThreadPool创建指定大小的线程池,可以设置线程的执行时间与延迟时间,任务过多需要排队
newCachedThreadPoo不限制线程的数量,对于不用的线程会回收,需要的时候直接创建

简单来讲:

  • 线程池
  • 创建方式:
  • 有一种方式叫先进先出,有一种可以给固定的线程池,有一种可以无线创建
  • 有四中拒绝策略:
  • 1、直接抛异常
  • 2、不拒绝、不处理、抛给其他主线程
  • 3、将任务队列中时间最长的剔除、接受新的任务
  • 4、当任务满了、就不再接受任务
Jdk1.8新特性:

1、接口中引入了关键字 default,通过default修饰方法,可以在接口里面定义具体的方法实现。

interface Test{
	public void show();
	default int sum(int x,int y){
	return x+y;
	}
}

2、 Lambda表达式
需要接口中的抽象方法只能有一个
不带返回值:

In1 n1 = ()->System.out.println("测试n1");
	n1.test();
interface In1{
	public void test();
}

带参数带返回值
有返回值时需要加大括号

In2 n2 = (a,b)->{return a+b;};
interface In2{
	public int sum(int a,int b);
}
Stream API

Stream是对集合对象操作的API,它专注于对集合对象进行各种非常便利,高效的聚合操作或者大批量操作,从而减少代码的复杂度。借助于lambda表达式,极大的提高编程效率和程序可读性。并且Stream支持串行和并行两种模式,使我们无需编写太多代码,就可以很方便的写出高性能的并发程序。
Stream对象每次操作后都会被关闭,因此其大多数方法的调用都会返回一个新的Stream对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值