lambda的推导:
- 是为了避免匿名内部类定义过多。
public class lambdaTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Thread(()->//括号中写的是参数,如果是一个参数则可以省略括号直接写参数
System.out.println("一边学习")).start();//一行代码可以省略
new Thread(()->{
System.out.println("一边蒙");
}).start();
}
}
守护线程
是为用户线程服务的,JVM停止不用等待守护线程执行完毕。
- 默认:用户线程
- JVM等待用户线程执行完毕才会停止。
public class DeamonTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
God god=new God();
Yous you=new Yous();
Thread t=new Thread(god);
t.setDaemon(true);//将God设置为守护线程
t.start();
//用户线程执行完毕后,不用等待守护线程的执行完毕,程序就可能停止。
new Thread(new Yous()).start();
}
}
class Yous implements Runnable{
@Override
public void run() {
for(int i=1;i<=365*100;i++) {
System.out.println("happy life...");
}
System.out.println("espire!");
}
}
class God implements Runnable{
@Override
public void run() {
for(int i=1;i<=365*100000;i++) {
System.out.println("blessing....");
}
}
}
利用龟兔赛跑的游戏理解线程
public class Racer implements Runnable{
private String winner;
@Override
public void run() {
for(int steps = 1;steps<=100;steps++) {
if(Thread.currentThread().getName().equals("rabbit")&&(steps%10)==0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"--->"+steps);
if(gameOver(steps)) {
break;
}
}
}
private boolean gameOver(int steps) {
if(winner!=null) {
return true;
}else {
if(steps==100) {
winner=Thread.currentThread().getName();
System.out.println("winner====>"+winner);
return true;
}
}
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Racer racer=new Racer();
new Thread(racer,"rabbit").start();
new Thread(racer,"tortoise").start();
}
}