首页 > 编程语言 > 详细

多线程学习---线程的创建

时间:2021-04-08 23:43:57      阅读:29      评论:0      收藏:0      [点我收藏+]

线程

  线程是进程中的一个实体,本身是不会独立存在的,操作系统在分配资源的时候是把资源分配给进程的,但是CPU资源比较特殊,被分配到线程中了,因为真正要占用CPU运行的是线程,所以也说线程是CPU分配的基本单位

  一个进程有多个线程,这些线程共享进程的堆和方法区资源,但是每个线程都有自己独立的程序计数器和栈区域

  在JAVA中,当我们启动main函数的时候,其实就启动了一个JVM的进程,而main函数所在的线程就是这个进程中的一个线程,也称主线程

线程的创建

  JAVA中创建线程三种方式,分别为实现Runnable接口的run方法,继承Thread类并重写run方法,使用FutureTask方式

  1、继承Thread

  public class ThreadTest extends Thread {

  @Override
  public void run() {
  System.out.println("使用继承Thread方式创建线程");
  }

  public static void main(String[] args) {
  //创建线程
  ThreadTest threadTest=new ThreadTest();
  //运行线程
  threadTest.start();
  }
  }

  2、实现Runnable接口  public class MyRunable implements Runnable {
      @Override
  public void run() {
  System.out.println("线程的第二种创建方式,实现Runnable");
  }

   public static void main(String[] args) {
  //创建
   MyRunable runable=new MyRunable();
  //启动
  new Thread(runable).start();
  }
  }
 

  3、使用FutureTask方式  
  public class CallerTask implements Callable<String> {

  @Override
  public String call() throws Exception {

  return "hello";
  }
  public static void main(String[] args) throws Exception{
  //创建异步任务
  FutureTask<String> futureTask=new FutureTask<>(new CallerTask());
  //启动线程
  new Thread(futureTask).start();
  //等待任务执行完毕,并返回执行结果
  String result=futureTask.get();
  System.out.println(result);
  }
  }

三种方式的区别
  
  
1、使用继承Thread方法的好处,在run()方法内部可以使用this直接获取当前的线程,不好的地方在于java只能单继承,如果继承了Thread类,就不能在继承其他类,另外任务和代码没有分离,当多个线程执行一样任务的时候需要多份任务代码
  2、实现runnable接口,多个线程可以执行一样任务,如果需要可以给线程类添加参数进行业务区分,另外,实现Runnable接口之后,还可以继承实现其他类和接口
  
  3、以上两种方式都有一个缺点,就是没有返回值,而使用FutureTask方式是可以有返回值的,不同的是先要创建异步任务,然后启动执行返回数据

  

多线程学习---线程的创建

原文:https://www.cnblogs.com/jisha/p/14634975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!