實(shí)現(xiàn)線程的兩種方式
繼承Thread類
package thread;
public class ThreadTest extends Thread {
//重寫thread的run方法
@Override
public void run(){
for(int i=0;i<100;i++){
System.out.println("我是第"+i+"個(gè)");
}
}
public static void main(String[] args) {
//創(chuàng)建重寫run的實(shí)體類
ThreadTest threadTest = new ThreadTest();
//調(diào)用thread的start方法
threadTest.start();
}
}
實(shí)現(xiàn)Runnable接口
package thread;
public class RunnableTest implements Runnable{
//重寫run方法
@Override
public void run(){
for(int i=0;i<100;i++){
System.out.println("我是第"+i+"個(gè)");
}
}
public static void main(String[] args) {
//創(chuàng)建重寫run的實(shí)體類
RunnableTest runnableTest = new RunnableTest();
//傳入目標(biāo)對(duì)象,利用Thread調(diào)用線程
new Thread(runnableTest).start();
new Thread(runnableTest).start();
}
}
為避免Java的單繼承的缺點(diǎn),建議使用Runnable接口
線程并發(fā)
多個(gè)線程對(duì)同一個(gè)資源進(jìn)行處理,會(huì)造成并發(fā)沖突
靜態(tài)代理模式
真實(shí)對(duì)象和代理對(duì)象要實(shí)現(xiàn)同一接口
代理對(duì)象要代理真實(shí)絕色
lamda表達(dá)式
為什么用lamda表達(dá)式?
-避免匿名內(nèi)部類過(guò)多
-可以讓代碼簡(jiǎn)介
-只留下核心邏輯
-實(shí)際屬于函數(shù)式編程(一個(gè)接口包含一個(gè)方法)
package thread;
public class Lambda {
public static void main(String[] args) {
/*class Like implements ILike{
@Override
public void lambda() {
System.out.println("我喜歡你");
}
}*/
/*ILike like = new ILike(){
@Override
public void lambda() {
System.out.println("我喜歡你");
}
};*/
ILike like = ()->{System.out.println("我喜歡你");};
like.lambda();
}
}
//函數(shù)型接口
interface ILike{
void lambda();
}
###線程狀態(tài)