java基礎之靜態代理模式、Lamda表示式以及執行緒的睡眠
阿新 • • 發佈:2021-08-30
靜態代理模式
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{
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;
執行緒和主函式一直都在執行,在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();
}
}
}
}