【java】开发ssh多线程只跑最后一个线程解决办法

7 篇文章 1 订阅


问题原因

在采用多线程启动ssh时候,发现开启的4个线程,最后只运行了最后一个线程,前面3个线程都关闭,通过查找原因是因为:

是匿名对象的原因,匿名对象不是强引用,对象声明生命周期短,当第一条线程执行run之后,二三四条线程应该是被虚拟机回收了。一般多线程都不用匿名对象

问题解决

方法一

//不推荐
new Thread(new Runnable() {
               @Override
               public void run() {
                   //业务逻辑
                 new Exec(bladeUtil.getUSER(),bladeUtil.getPASSWORD(),bladeUtil.getHOST(),bladeUtil.getDEFAULT_SSH_PORT(),bladeUtil.getBladeName());
               }
           }).start();

方法二(推荐)

//推荐,或者如果多线程用线程池
ThreadBlake1 threadBlake1 =new ThreadBlake1(bladeUtil1);
threadBlake1.start();

public class ThreadBlake1 extends Thread{
    private BladeUtil bladeUtil1;
    public ThreadBlake1(BladeUtil bladeUtil1) {
        this.bladeUtil1 = bladeUtil1;
    }

    @Override
    public void run() {
//        super.run();
        new Exec(bladeUtil1.getUSER(),bladeUtil1.getPASSWORD(),bladeUtil1.getHOST(),bladeUtil1.getDEFAULT_SSH_PORT(),bladeUtil1.getBladeName());
    }
}


额外补充

开发ssh多线程只跑最后一个线程解决办法部分的记录就先到这!接下来,是一些整理的c++要点概要!

多态

  • 多态分为静态多态和动态多态。 而动态多态是通过虚表实现, 静态多态包括重载和模板, 这和虚表没关系。
  • C++中的虚函数的作用主要是实现了多态的机制。 而虚函数是通过虚函数表(V-Table)实现的。构造函数不能声明为虚函数, 析构函数可以声明为虚函数, 而且有时是必须声明为虚函数。
  • 构造函数为什么不能声明为虚函数?
    答: 1 构造一个对象的时候, 必须知道对象的实际类型, 而虚函数行为是在运行期间确定实际类型的。 而在构造一个对象时, 由于对象还未构造成功。 编译器无法知道对象的实际类型是该类本身, 还是该类的一个派生类, 或是更深层次的派生类。 无法确定。
    2 虚函数的执行依赖于虚函数表。 而虚函数表在构造函数中进行初始化工作, 即初始化 vptr,让他指向正确的虚函数表。 而在构造对象期间, 虚函数表还没有被初始化, 将无法进行。 析构函数执行时先调用派生类的析构函数, 其次才调用基类的析构函数
  • 析构函数为什么声明为虚函数?
    答: 如果析构函数不是虚函数, 而程序执行时又要通过基类的指针去销毁派生类的动态对象,那么用 delete 销毁对象时, 只调用了基类的析构函数, 未调用派生类的析构函数。 这样会造成销毁对象不完全。包含至少一个纯虚函数的类视为抽象类。

三种权限

在这里插入图片描述

文件打开权限

  • r 打开读写文件 该文件必须存在
  • r+打开读写文件 该文件必须存在
  • w 打开只写文件 文件存在则长度清零 文件不存在建立文件
  • w+打开读写文件 文件存在则长度清零 文件不存在建立文件
  • a 以附加方式打开只写文件 文件不存在建立文件 文件存在写入的数据加到文件末尾
  • a+以附加方式打开读写文件 文件不存在建立文件 文件存在写入的数据加到文件末尾(读写必须有+)

引用

  • 始终用 const 限制所有指向只读输入参数的指针和引用
  • 优先按 const 的引用取得其他用户定义类型的输入(因为可以提高程序的执行效率, 无需创建
    参数的副本)
  • 如果函数需要修改其参数副本,则可以考虑通过值传递代替通过引用传递(注: 所的修改参
    数副本就是在函数内修改引用的参数, 使用值传递不会改变原来的值, 而引用传递会改变参
    数以前的值 )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻傻虎虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值