线程

2021-12-01  本文已影响0人  公子请留步LookMe

创建线程的几种方式

public class demo1 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
     //lambda表达式
       FutureTask<Integer> futureTask1 = new FutureTask(()->{
           System.out.println(Thread.currentThread().getName()+"come in callable");
           return 1024;
       });
       //创建线程
       new Thread(futureTask1,"callable").start();
       //判断线程是否执行完
        while (!futureTask1.isDone()){
            System.out.println("wait.....");
        }
        //调用FutureTask的get 方法
        System.out.println(futureTask1.get());

    }
}

线程的几种状态:

image.png
等待阻塞:运行(runing)的线程执行了wait()方法,jvm会把线程放入等待线程池中
同步阻塞:运行(runing)的线程在获取对象同步锁时,诺该同步锁被别的线程占用。则jvm会把该线程放入锁池中(lock pool)
其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或Thread.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。

线程池常用的方法

上一篇 下一篇

猜你喜欢

热点阅读