【Java】多线程和创建线程的三种方法

多线程

多线程即是在在同一时间,系统可以做多件事情。

首先要理解进程(Processor)和线程(Thread)的区别:
进程:

是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

线程:

是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

创建线程的三种方法

Java多线程实现方式主要有三种: 继承Thread类; 实现Runnable接口; 实现Callable接口;

1.继承Thread类

Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。

public class MyThread extends Thread {
          
   
   public void run() {
          
   
       System.out.println("MyThread.run()");
          }
     }
	 MyThread myThread1 = new MyThread();
	 MyThread myThread2 = new MyThread(); 
	 myThread1.start(); 
	 myThread2.start();
2.实现Runnable接口

如果自己的类已经extends另一个类,就无法直接extends Thread,此时,可以实现一个Runnable接口。

public class MyThread extends OtherClass implements Runnable {
          
    
   public void run() {
          
    
    System.out.println("MyThread.run()"); 
   } 
}

实例化一个Thread,并传入自己的MyThread实例。

MyThread myThread = new MyThread(); 
 Thread thread = new Thread(myThread); 
 thread.start();
3.实现Callable接口
Callable<V> oneCallable = new SomeCallable<V>();  
  //由Callable<Integer>创建一个FutureTask<Integer>对象:  
  FutureTask<V> oneTask = new FutureTask<V>(oneCallable);  
  //注释:FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。
    //由FutureTask<Integer>创建一个Thread对象:  
  Thread oneThread = new Thread(oneTask);  
  oneThread.start();  
  //至此,一个线程就创建完成了。
经验分享 程序员 微信小程序 职场和发展