1.继承Thread
public class MyThread1 extends Thread(){
@Override
public void run(){
//业务代码
}
}
调用:
new MyThread1().start();
2.实现Runable接口
public class MyThread2 implements Runable(){
@Override
public void run (){
//业务代码
}
}
调用:传入实现类
new Thread(new MyThread2()).start();
3.使用lambda表达式
new Thread(()->{
//业务代码
}).start();
也可以使用线程池获取:Executors.newCachedThread
常见命令:
Thread.sleep(1000);//毫秒值 线程睡眠
Thread.yield();当前线程让出cpu,回到等待队列。
Thread t1 = new Thread(()->{});
Thread t2 = new Thread(()->{
t1.join();
});
t1 t2
| |
| |
> |
|
|<
//在运行的时候运行其他线程,可以用来等待其他线程结束 可以实现多个线程顺序执行;
//如在主线程顺序调用t1,t2,t3或t1中join t2,t2中join t3
java线程状态:
尽量不要使用stop 强行关闭线程,可能造成状态不一致
Tips:Eden区的对象什么时候进入Old区?
JVM参数:-XX:PretenursSizeThreshold 默认为0 意思是不管多大都在eden区创建对象,