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

    继承Thread类

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

    实现Runnable接口

    public class RunnableTest implements Runnable{
        @Override
        public void run() {
            System.out.println("thread is running!");
        }
        public static void main(String[] args) {
            Thread t1 = new Thread(new RunnableTest());
            t1.start();
        }
    }
    

    匿名内部类的两种写法

    public class App {
        public static void main(String[] args){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("thread1 is running!");
                }
            }){}.start();
    
            new Thread(){
                @Override
                public void run(){
                    System.out.println("thread2 is running!");
                }
            }.start();
        }
    }
    

    基于java.util.concurrent.Callable工具类的实现,带返回值

    public class CallableTest {
        public static void main(String[] args) throws Exception {
            Callable<Integer> call = new Callable<Integer>() {
                @Override
                public Integer call() throws Exception {
                    System.out.println("thread is running!");
                    return 1;
                }
            };
            FutureTask<Integer> task = new FutureTask<>(call);
            Thread t =  new Thread(task);
            t.start();
        }
    }
    

    基于java.util.Timer工具类的实现

    public class TimerTest {
        public static void main(String[] args) throws Exception {
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    System.out.println("thread is running!");
                }
            }, new Date());
        }
    }
    

    基于java.util.concurrent.Executors工具类,基于线程池的实现

    public class ThreadPoolTest {
        public static void main(String[] args) {
            // 创建线程池
            ExecutorService threadPool = Executors.newFixedThreadPool(10);
            while(true) {
                threadPool.execute(new Runnable() { // 提交多个线程任务,并执行
                    @Override
                    public void run() {
                        System.out.println(Thread.currentThread().getName() + " is running ..");
                        try {
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        }
    }
    

    更多信息可以关注我的个人博客:逸竹小站

    也欢迎关注我的公众号:yizhuxiaozhan,二维码:公众号二维码

  • 相关阅读:
    蟠桃记
    考新郎
    有假币
    年会抽奖
    发邮件
    进制回文数
    数位和
    外星人的语言
    一的个数
    继承
  • 原文地址:https://www.cnblogs.com/coder2017/p/11729391.html
Copyright © 2011-2022 走看看