java多进程还是多线程,什么叫多线程-Java支持多线程有何意义

  java多进程还是多线程,什么叫多线程?Java支持多线程有何意义

  java是多线程的,使用多线程有三种方法:继承Thread类、实现Runnable接口和使用Callable和Future创建线程。

  如何解决写爬虫IP受阻的问题?立即使用。

  继承Thread类(推荐学习:java课程)

  实现非常简单。你只需要创建一个类来继承Thread类,然后重写run方法。通过调用main方法中类实例对象的start方法,可以实现多线程并发。代码:

  公共类MyThread扩展线程{

  @覆盖

  公共无效运行(){

  super . run();

  System.out.println(执行子线程.);

  }

  }测试用例:

  公共类测试{

  公共静态void main(String[] args) {

  MyThread MyThread=new MyThread();

  myth read . start();

  System.out.println(主线程.);

  }

  }运行结果:

  实现Runnable接口

  这个方法的实现也很简单,就是把Thread类的继承改为Runnable接口的实现。代码如下:

  公共类MyRunnable实现Runnable {

  @覆盖

  公共无效运行(){

  System.out.println(执行子线程.);

  }

  }测试用例:

  公共类测试{

  公共静态void main(String[] args) {

  runnable runnable=new my runnable();

  Thread thread=新线程(runnable);

  thread . start();

  System.out.println(主线程完成了!);

  }

  }运行结果:

  使用Callable和Future创建线程

  上面的两种方式都有这两个问题:

  无法获取子线程的返回值。

  run方法不能引发异常。

  为了解决这两个问题,我们需要使用可调用接口。说到接口,上面的runnable接口实现类实例作为Thread类的构造函数的参数传入,然后通过Thread的启动执行Run方法中的内容。但是,Callable不是Runnable的子接口,而是一个全新的接口。它的实例不能直接传入线程结构,所以需要另一个接口进行转换。

  以这里面其实就是要比上一个方法再多一个转换过程,最终一样是通过Thread的start来创建新线程。有了这个思路,代码就很容易理解了:

  导入Java . util . concurrent . callable;

  公共类MyCallable实现Callable {

  int I=0;

  @覆盖

  公共对象调用()引发异常{

  system . out . println(thread . current thread()的值。getname() I: I);

  返回I;//调用方法可以有返回值

  }

  }测试:

  导入Java . util . concurrent . callable;

  导入Java . util . concurrent . future task;

  公共类测试{

  公共静态void main(String[] args) {

  callable callable=new my callable();

  for(int I=0;i 10i ) {

  FutureTask task=new FutureTask(可调用);

  新线程(任务,“子线程”I)。start();

  尝试{

  //获取子线程的返回值

  System.out.println(子线程返回值: task . get() \ n );

  } catch(异常e) {

  e . printstacktrace();

  }

  }

  }

  }执行结果(部分):

  这就是java多线程的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: