• 使用线程


    使用线程

    三种使用线程的方法:

      1. 实现Runnable接口
      2. 实现Callable接口
      3. 继承Thread类

    ​  实现Runnable和Callable接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还是要通过调用Thread来调用,可以说任务是通过线程驱动从而执行的。

    1.实现Runnable接口

      需要实现run()方法。

      通过Thread调用start()方法来启动线程。

    public class MyRunnable implements Runnable{
        public void run(){
            //...
        }
        public static void main(String[]args){
            MyRunnable instance=new MyRunnable();
            Thread thread=new Thread(instance);
            thread.start();
        }
    }
    

    2.实现Callable接口

      与Runnable相比,Callable有返回值,返回值通过Futrue Task进行封装。

    import java.util.concurrent.Callable;
    import java.util.concurrent.FutureTask;
    import java.java.util.concurrent.Thread;
    public class CallableTest{
        public static void main(String[]args) throws ExecutionException,InterruptedException{
            MyCallable mc =new MyCallable();
            FutureTask<Integer>ft=new FutureTask<Integer>(mc);
            Thread thread=new Thread(ft);
            thread.start();
            System.out.print(ft.get());
        }
    }
    class MyCallable implements Callable {
        public Integer call(){
            return 123;
        }
    }
    

    3.继承Thread类

    ​  需要实现run()方法,因为Thread也实现了Runnable接口。

    ​  当调用start()方法启动一个线程时,虚拟机会将该线程放到就绪队列中等待被调度,当一个线程被调度的时候会执行该线程的run()方法。

    public class MyThread extends Thread{
        public void run(){
            //...
        }
    }
    public static void main(String[]args){
        MyThread myThread=new MyThread();
        myThread.start();
    }
    

    实现接口VS继承Thread

    实现接口更好一点:

    ​  1.java 不支持多重继承,因此继承了Thread就无法继承其他类,但是可以实现多个接口;

    ​  2.类可能只要求执行就好,如果继承的话开销太大。

  • 相关阅读:
    jdk源码剖析三:锁Synchronized
    ASP.NET的session操作方法总结
    C#文件相同性判断
    C#的DataTable操作方法
    C#二进制流的序列化和反序列化
    C#常用的IO操作方法
    C#缓存操作
    CLR中的程序集加载
    Oracle数据库的SQL分页模板
    奇妙的NULL值,你知道多少
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10688609.html
Copyright © 2020-2023  润新知