Day9 等待与唤醒案例.线程池.Lambda表达式

1. 线程间通信:多线程工作时,需要对同一数据进行操作,避免对同一共享变量争夺,通过等待唤醒机制,有效利用资源;

2.等待与唤醒机制:wait:线程不在活动,不参与带哦度,进入wait set中;

                                notify:选取所统治对象的wait set中的一个线程释放;

                                nofityAll:释放所统治对象的wait set上全部线程;

                                wait和notify对同一个锁对象调用;同属于Object类;必须在同步代码块或者同步函数中使用;

                                分析:

3.线程池:1>并发的线程数量多,同时每个线程在很短的时间内就结束;

                      引入一个方法,是执行完一个任务不被销毁,可以执行其他任务,是容纳多个线程的容器;

                 2>线程池容器:(一个集合)ArrayList,HashSet,LinkedList<Thread>,HashMap

                3>原理:当序第一次启动的时候,创建多个线程到一个集合中,当想要使用多个线程的时候,从集合中取出使用;

                                  //Thread t = list.remove(0);返回被移除元素(线程只能被一个任务使用)

                                 //Thread t = linked.removeFist();

                               使用线程结束后,需要把线程归还到线程池;

                                 //list.add(t);

                                 //list.addLast(t);

                4>使用步骤:<1>使用线程池工厂类Excutors里面的静态方法newFixedThreadPool生产指定线程数量的线程池;

                                      <2>创建一个类,实现Runable接口,重写run方法,设置线程任务;

                                      <3>调用ExecutorService中的方法submit,传递线程任务(实现类),开启线程,执行run方法;

                                      <4>调用ExecutorService中的方法shutdown销毁线程池(?不建议使用)

4. 1>匿名内部类:好处:不用定义一个内部类来实现接口;弊端:语法复杂;

    2>Lambda表达式:<1>()-> System.out.println("多线程任务执行!")

                                            //():Lambda的参数列表;

                                            //  ->:将前面的参数传递给后面的逻辑代码;

                                   <2>凡事可以根据上下文推导出来的,可以省略不写 

                                       (参数列表)括号中参数列表的数据类型,可省略 / 括号中的参数只有一个,类型和()可省略;

                                       (一些代码)若{}中的代码只有一行,无论是否有返回值,都可以省略({},return,;)必须同时省略;

                                   <3>使用前提:必须有接口,同时接口有且只有一个抽象方法;

                                                           方法的参数或局部变量类型必须是Lambda对应的接口类型,Lambda才可当接口实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值