- 进程、线程?
例如电脑上的qq.exe 当双击启动后,就相当于一个进程,而线程是进程中的最小执行单元,相当于进程中的一条执行路径。
- 线程的启动方式
/**
* 线程的启动方式
*/
public class TestThread {
public static void main(String[] args) {
//第一种线程的启动
Thread t1 = new Test();
t1.start();
//第二种
Runnable t2 = new Test2();
new Thread(t2).start();
//第三种线程启动
new Thread(new FutureTask(new Test3())).start();
//还有一种直接利用lamda表达式
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类方式线程创建");
}
}).start();
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new Runnable() {
@Override
public void run() {
System.out.println("直接利用线程池创建");
}
});
executorService.shutdown();
}
}
class Test extends Thread{
public void run(){
System.out.println("第一种线程创建方式");
}
}
class Test2 implements Runnable{
@Override
public void run() {
System.out.println("第二种线程创建方式");
}
}
class Test3 implements Callable{
@Override
public Object call() throws Exception {
System.out.println("第三种线程创建方式,有返回值的");
return null;
}
}
- 线程的常见方法
//线程睡眠一段时间 然后在进行运行
Thread.sleep(100);
//当前线程让出一下cpu 进入等待队列 再次进行抢占cpu资源
Thread.yield();
//在当前线程中加入你想要加入的线程 本线程等待 等待调用线程执行完毕 再执行
new Thread().join();
- 线程的状态
新建 就绪 执行 结束