zoukankan      html  css  js  c++  java
  • 创建线程的几种方式

    1.Thread类

    继承Thread类,重写run()方法

    public class ThreadDemo {
        public static void main(String[] args) {
            MyThread thread = new MyThread();
            thread.start();
        }
    }
    
    class MyThread extends Thread{
        @Override
        public void run() {
            System.out.println("MyThread");
        }
    }
    

    注意:调用了start方法以后,线程才算启动,虚拟机会先为我们创建一个线程,等到这个线程第一次得到时间片时再调用run()方法,不可多次调用start()方法,否则会抛出异常java.lang.IllegalThreadStateException

    2.实现Runnable接口

    public class ThreadDemo2 {
        public static void main(String[] args) {
            Thread thread = new Thread(new MyThread2());
            thread.start();
            new Thread(()->{
                System.out.println("Java8匿名内部类");
            },"aaa").start();
        }
    
    
    }
    
    class MyThread2 implements Runnable{
        @Override
        public void run() {
            System.out.println("MyThread");
        }
    }
    

    3.实现Callable接口

    public class Task implements Callable {
        @Override
        public Integer call() throws Exception {
            Thread.sleep(1000);
            return 10;
        }
    
        public static void main(String[] args) throws Exception {
            ExecutorService executorService = Executors.newCachedThreadPool();
            Task task = new Task();
            Future result = executorService.submit(task);
            System.out.println(result.get(1, TimeUnit.SECONDS));
        }
    }
    
  • 相关阅读:
    docker 镜像管理
    docker 常用操作
    docker 简单介绍与安装
    emacs 缩进
    stl标准库 iterator_traits
    emacs semantic,speedbar,gdb汇总
    在emacs 里使用gdb
    emacs speedbar功能介绍
    前端基础之BOM和DOM
    modules模块
  • 原文地址:https://www.cnblogs.com/jordan95225/p/13276626.html
Copyright © 2011-2022 走看看