java 实现内部类线程_Java内部类实现伪方法级多线程

最近碰到一个问题,就是用户在填写相关信息提交后,后台需要将一些文件同步到另外一台服务器,而这个时候,由于用的是spring的框架,导致前端页面需要等待文件同步完成,才能弹出提示信息。相信大家在很多时候都会碰到这种问题,比如收发邮件,也会等待邮件发送完成,等等。于是便很自然的想到多开一个线程去处理一些比较耗时的任务。但是java本身只提供类级别的多线程,如下:

继承Thread类

class A extendsThread {public voidrun() {

System.out.println("A");

}public static voidmain(String[] args) {

A a= newA();

a.run();

}

}

实现Runnable接口

class B implementsRunnable {public voidrun() {

System.out.println("B");

}public static voidmain(String[] args) {

B b= newB();

Thread thread= newThread(b);

thread.start();

}

}

Executor

可以更方便的创建管理线程池,后期我会用一篇博客详细讲述。

可以看到,这些多线程的实现方式都是集中在类级别上的,必须要一个类实现或继承相应的接口和类,并且重写run方法,才能启动使用。但是,假设在spring的一个类中:

@RequestMapping("/c")public classC {//主方法

@RequestMapping("c1")public voidc1() {//需要开启另一个线程调用c2方法,从而不用等待c2执行完毕

c2();

}//需要实现多线程

public voidc2() {//调用c3

c3();

}//文件同步方法,需要后台执行

public voidc3() {

}

}

我们要在c2方法中调用后台方法,那么就需要在c1类中调用c2,从而开启另一个线程去执行后台业务代码,而不用等待c3完成

通过上面的几种实现多线程的方式,这个问题是比较难解决的,或者我们新建另一个类去实现多线程:

public class MultiThread implementsRunnable {//后台业务代码

}

然后在c类中调用MultiThread开启多线程。但是既然我们的标题是使用内部类,那么我们来看看用内部类这个问题就会变得比较简单:

内部类实现伪方法级多线程:

我们还是用上面的例子来说明:

@RequestMapping("/c")public classC {//主方法

@RequestMapping("c1")public voidc1() {//需要开启另一个线程调用c2方法,从而不用等待c2执行完毕

//c2();

(newMultiThreadInnerClass()).start();

}//需要实现多线程

public voidc2() {//调用c3

c3();

}//创建内部类集成Thread,调用c3,开启多线程

class MultiThreadInnerClass extendsThread{public voidrun {

c3();

}

}//文件同步方法,需要后台执行

public voidc3() {

}

}

这样就可以实现伪方法级的多线程,在日常的编码中,多用内部类会使代码逻辑更清晰,结构更合理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值