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));
        }
    }
    
  • 相关阅读:
    设计模式之观察者模式
    设计模式之外观模式
    设计模式之模板模式
    设计模式之装饰器模式
    设计模式之代理模式
    .NET常见问题汇总
    使用位运算计算两个整数的加减
    一个程序判断CPU是大端还是小端
    后缀表达式 转 表达式树
    实习一个月的小结
  • 原文地址:https://www.cnblogs.com/jordan95225/p/13276626.html
Copyright © 2011-2022 走看看