java基础之静态代理模式、Lamda表达式以及线程的睡眠
2021/8/30 22:06:11
本文主要是介绍java基础之静态代理模式、Lamda表达式以及线程的睡眠,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
静态代理模式
1、真实对象和代理对象都需要使用同一接口
2、代理对象要代理真实对象
代理对象可以做真实对象做不了的东西;
真实对象可以专注于自己的东西;
public class Testc { public static void main(String[] args) { company company = new company(new de()); company.marr(); } } interface marry{ void marr(); } class de implements marry{ @Override public void marr() { System.out.println("好耶!!"); } } class company implements marry{ private marry hi; public company(marry hi) { this.hi = hi; } @Override public void marr() { before(); this.hi.marr(); after(); } private void after() { System.out.println("结婚之后"); } private void before() { System.out.println("结婚之前"); } }
Lamda表达式
意义:避免匿名内部定义过多;
实质属于函数式编程;
任何接口,只包含唯一一个抽象方法的就是函数式接口—可以用Lamda表达式
fine m=null; m = (a) -> { System.out.println("Lamda!" + a); }; m.good(6); //去掉括号,参数只能有一个才能去掉括号 m = a -> { System.out.println("Lamda!" + a); }; m.good(6); //去掉花括号 (只能有一行代码,否则代码块) m=a-> System.out.println("Lamda!!!!"+a); m.good(90); interface fine{ void good(int a); } //接口
更加的简单;
多个参数也可以去掉参数类型,但是要去掉都去掉,必须加上括号;
线程的停止
建议是让线程自己正常停止,不建议死循环;
建议使用标志位,自己设置一个标志位;
不要使用Stop,destory等方法;
public class Threadstop implements Runnable { private boolean flag=true; @Override public void run() { int i=0; while (flag){ System.out.println("线程..."+i++); } } //线程的标志位 public void stop(){ flag=false; } public static void main(String[] args) { Threadstop t1 = new Threadstop(); new Thread(t1).start(); for (int i = 0; i < 500; i++) { System.out.println(i); if (i==250){ t1.stop(); System.out.println("线程停止!"); } } } }
线程和主函数一直都在运行,在250 的时候,启动了Stop标志位,线程停止,而主函数继续跑完。
线程休眠
sleep的1000=1秒;
异常为InterruptedException;
Sleep可以模拟网络延迟,倒计时等
每一个对象都有一个锁,sleep不会释放锁;
倒计时:
package Stop; public class Testsleep { public static void tendown() throws InterruptedException { int num=10; while (true){ Thread.sleep(1000); System.out.println(num--); if(num<=0){ break; } } } public static void main(String[] args) { try { tendown(); } catch (InterruptedException e) { e.printStackTrace(); } } }
打印系统当前时间:
package Stop; import java.text.SimpleDateFormat; import java.util.Date; public class Nowtime { public static void main(String[] args) { Date nowdata = new Date(System.currentTimeMillis()); while (true) { try { Thread.sleep(1000); System.out.println(new SimpleDateFormat("HH:mm:ss").format(nowdata)); nowdata = new Date(System.currentTimeMillis()); } catch (InterruptedException e) { e.printStackTrace(); } } } }
这篇关于java基础之静态代理模式、Lamda表达式以及线程的睡眠的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)