首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该为阻塞状态使用多个类,还是使用一个具有多个构造函数的类?

对于阻塞状态的处理,可以根据具体情况选择使用多个类或者使用一个具有多个构造函数的类。

如果阻塞状态的处理逻辑较为复杂,包含多个不同的功能模块,可以考虑使用多个类来实现。每个类负责处理一个特定的功能,通过类之间的协作来完成整个阻塞状态的处理。这样可以提高代码的可读性和可维护性,使得代码结构更加清晰。

另一方面,如果阻塞状态的处理逻辑相对简单,只包含少量的功能模块,可以考虑使用一个具有多个构造函数的类来实现。通过不同的构造函数来传入不同的参数,实现不同的功能。这样可以减少类的数量,简化代码结构,提高代码的可复用性。

需要根据具体的业务需求和代码结构来选择合适的方式。无论选择哪种方式,都需要保证代码的可读性、可维护性和可扩展性。在实际开发中,可以根据实际情况进行评估和测试,选择最适合的方式来处理阻塞状态。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

当前对象与父对象(thissuper)

super(参数):调用父一个构造函数(应该为构造函数第一条语句)。...this(参数):调用本类中另一种形式构造函数(应该为构造函数第一条语句)。...) { this(name);// 调用具有相同形参构造方法(3) prt("子类:调用子类具有相同形参构造方法:his age is " + age); }...(应该为构造函数第一条语句) this(参数):调用本类中另一种形成构造函数(应该为构造函数第一条语句) class A{ public A(){ System.out.println...(用来访问直接父中被隐藏中成员数据或函数),基与派生中有相同成员定义时如: super.成员(成员变量、成员方法) this:它代表当前对象名(在程序中易产生不同意义,使用this来指明当前对象

53610

Java中this和super用法总结【转】

若不调用父方法value(),只调用父变量name的话,则父name值为默认值null。 3.引用构造函数 super(参数):调用父一个构造函数(应该为构造函数第一条语句)。...this(参数):调用本类中另一种形式构造函数(应该为构造函数第一条语句)。...} Chinese(String name) { super(name);// 调用父具有相同形参构造方法(2) prt("子类·调用父”含一个参数构造方法...super和this异同: super(参数):调用基一个构造函数(应该为构造函数第一条语句) this(参数):调用本类中另一种形成构造函数(应该为构造函数第一条语句) super...(在程序中易产生二义性之处,使用this来指明当前对象;如果函数形参与成员数据同名,这时需用this来指明成员变量名) 调用super()必须写在子类构造方法第一行,否则编译不通过。

1K00
  • Java This和Super用法

    若不调用父方法value(),只调用父变量name的话,则父name值为默认值null。 3、引用构造函数 super(参数):调用父一个构造函数(应该为构造函数第一条语句)。...this(参数):调用本类中另一种形式构造函数(应该为构造函数第一条语句)。 ? 运行结果: 父:无参数构造方法: A Person....person's name is codersai 子类:调用父”含一个参数构造方法“: his name is codersai 子类:调用子类具有相同形参构造方法:his age is 18...super和this异同: super(参数):调用基一个构造函数(应该为构造函数第一条语句) this(参数):调用本类中另一种形成构造函数(应该为构造函数第一条语句) super...(在程序中易产生二义性之处,使用this来指明当前对象;如果函数形参与成员数据同名,这时需用this来指明成员变量名) 调用super()必须写在子类构造方法第一行,否则编译不通过。

    87040

    C#多线程(6):线程通知

    这一篇将学习 C# 中用于发送线程通知 AutoRestEvent 。 AutoRestEvent 用于从一个线程向另一个线程发送通知。...微软文档是这样介绍:表示线程同步事件在一个等待线程释放后收到信号时自动重置。 其构造函数只有一个构造函数里面的参数用于设置信号状态。...构造函数 说明 AutoResetEvent(Boolean) 用一个指示是否将初始状态设置为终止布尔值初始化 AutoResetEvent 新实例。 真糟糕机器翻译。...常用方法 AutoRestEvent 是干嘛构造函数参数又是干嘛?不着急,我们来先来看看这个常用方法: 方法 说明 Close() 释放由当前 WaitHandle 占用所有资源。...一个简单示例 这里我们编写一个这样程序: 创建一个线程,能够执行多个阶段任务;每完成一个阶段,都需要停下来,等待子线程发生通知,才能继续下一步执行。

    89051

    Java 多线程系列Ⅰ

    public void run() {System.out.println('用Thread实现线程');} } 实现Runnable(优先使用) Java具有单继承局限,所有的Java程序针对继承都应该是回避...将实现对象作为参数传递给FutureTask构造函数 将FutureTask对象作为参数传递给Thread构造函数(因为FutureTask实现了Runnable接口,所以可以这么传) 调用Thread...Thread 是 JVM 用来管理线程一个,换句话说,每个线程都有一个唯一 Thread 对象与之关联,即Java代码中Thread对象和操作系统中线程是一一对。...如果只是调用 run()方法,那么代码还是同步执行,必须等待一个线程 run()方法里面的代码全部执行完毕之后,另外一个线程才可以执行其 run()方法里面的代码。...需要注意是,线程只能从就绪状态进入到运行状态。 阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。

    17310

    c 线程安全单例模式-c多线程并发处理方式_Java多线程面试题:线程锁+线程池+线程同步等

    他们允许更灵活结构,可以具有完全不同性质,并且可以支持多个相关条件对象。   ...有一个构造函数,可以传入一个int型整数n,表示某段代码最多只有n个线程可以访问,如果超出了n,那么请等待,等到某个线程执行完毕这段代码块,下一个线程再进入。...由此可以看出如果构造函数中传入int型整数n=1,相当于变成了一个了。   41.是什么?   为,,vice,和提供了一些工具方法。   ...如果说上面的说法让你感到困惑,那么举个例子,假设中new了,main函数中new了,那么:   (1)构造方法、静态块是main线程调用run()方法是自己调用   (2)构造方法、静态块是调用...3)降低稳定性   JVM在可创建线程数量上存在一个限制,这个限制值将随着平台不同而不同,并且承受着多个因素制约,包括JVM启动参数、Thread构造函数中请求栈大小,以及底层操作系统对线程限制等

    33610

    Java基础系列1:Java面向对象

    用于描述客观世界里某一对象共同特征,而对象则是具体存在,Java程序使用构造器来创建该类对象。...所谓对象就是真实世界中实体,对象与实体是一一对,也就是说现实世界中每一个实体都是一个对象,它是一种具体概念。对象有以下特点: 对象具有属性和行为。 对象具有变化状态。 对象具有唯一性。...重写与重载区别: 重写:相对继承而言,子类中对父已经存在方法进行区别化修改。 重载:在同一个中处理不同数据多个相同方法名多态手段。重载方法名相同,参数列表不同。...: super(参数):调用父一个构造函数(应该为构造函数第一条语句)。...this(参数):调用本类中另一种形式构造函数(应该为构造函数第一条语句)。

    47310

    Java 多线程 从无到有

    大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强基本行为,否则不应为该类创建子类。...这种构造方法与 Thread(null, null, gname) 具有相同作用,其中 gname 是一个新生成名称。自动生成名称形式为 "Thread-"+n,其中 n 为整数。...这种构造方法与 Thread(null, target,gname) 具有相同作用,其中 gname 是一个新生成名称。自动生成名称形式为 “Thread-”+n,其中 n 为整数。...4 public Thread(String name) 分配新 Thread 对象。这种构造方法与 Thread(null, null, name) 具有相同作用。...ExecutorService Java.util.concurrent.Executors提供创建线程池方法 ThreadPoolExcecutor使用 (自定义线程池) 构造器中各个参数含义

    81250

    多线程面试题(值得收藏)「建议收藏」

    Lock接口比同步方法和同步块提供了更具扩展性锁操作。他们允许更灵活结构,可以具有完全不同性质,并且可以支持多个相关条件对象。...Semaphore有一个构造函数,可以传入一个int型整数n,表示某段代码最多只有n个线程可以访问,如果超出了n,那么请等待,等到某个线程执行完毕这段代码块,下一个线程再进入。...由此可以看出如果Semaphore构造函数中传入int型整数n=1,相当于变成了一个synchronized了。 45、Executors是什么?...如果说上面的说法让你感到困惑,那么举个例子,假设Thread2中new了Thread1,main函数中new了Thread2,那么: 1)Thread2构造方法、静态块是main线程调用,Thread2...3)降低稳定性 JVM在可创建线程数量上存在一个限制,这个限制值将随着平台不同而不同,并且承受着多个因素制约,包括JVM启动参数、Thread构造函数中请求栈大小,以及底层操作系统对线程限制等

    53920

    史上最强多线程面试44题和答案:线程锁+线程池+线程同步等

    他们允许更灵活结构,可以具有完全不同性质,并且可以支持多个相关条件对象。...Semaphore有一个构造函数,可以传入一个int型整数n,表示某段代码最多只有n个线程可以访问,如果超出了n,那么请等待,等到某个线程执行完毕这段代码块,下一个线程再进入。...由此可以看出如果Semaphore构造函数中传入int型整数n=1,相当于变成了一个synchronized了。 41.Executors是什么?...如果说上面的说法让你感到困惑,那么举个例子,假设Thread2中new了Thread1,main函数中new了Thread2,那么: (1)Thread2构造方法、静态块是main线程调用,Thread2...3)降低稳定性 JVM在可创建线程数量上存在一个限制,这个限制值将随着平台不同而不同,并且承受着多个因素制约,包括JVM启动参数、Thread构造函数中请求栈大小,以及底层操作系统对线程限制等

    77900

    Java多线程学习

    因此,不管是扩展Thread还是实现Runnable接口来实现多线程,最终还是通过Thread对象API来控制线程,熟悉ThreadAPI是进行多线程编程基础。...实现Runnable接口比继承Thread具有的优势: 适合多个相同程序代码线程去处理同一个资源....无论synchronized关键字加在方法上还是对象上,它取得锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程对象访问。 每个对象只有一个锁(lock)与之相关联。...编写线程安全,需要时刻注意对多个线程竞争访问资源逻辑和安全做出正确判断 6. 当多个线程等待一个对象锁时,没有获取到锁线程将发生阻塞。 7....通过构造方法传递数据 在创建线程时,必须要建立一个Thread或其子类实例。因此,我们不难想到在调用start方法之前通过线程构造方法将数据传入线程。

    41220

    2019年Java并发精选面试题,哪些你还不会?(含答案和思维导图)

    Lock 接口比同步方法和同步块提供了更具扩展性锁操作。他们允许更灵活结构,可以具有完全不同性质,并且可以支持多个相关条件对象。...Semaphore有一个构造函数,可以传入一个 int 型整数 n,表示某段代码最多只有 n 个线程可以访问,如果超出了 n,那么请等待,等到某个线程执行完毕这段代码块,下一个线程再进入。...由此可以看出如果 Semaphore 构造函数中传入 int 型整数 n=1,相当于变成了一个 synchronized 了。 45、Executors 是什么?...如果说上面的说法让你感到困惑,那么举个例子,假设 Thread2 中 new 了Thread1,main 函数中 new 了 Thread2,那么: (1)Thread2 构造方法、静态块是 main...(3)降低稳定性 JVM 在可创建线程数量上存在一个限制,这个限制值将随着平台不同而不同,并且承受着多个因素制约,包括 JVM 启动参数、Thread 构造函数中请求栈大小,以及底层操作系统对线程限制等

    38600

    Java知识面试题复习(二)Java基础语法

    super(参数):调用父一个构造函数(应该为构造函数第一条语句)。...this(参数):调用本类中另一种形式构造函数(应该为构造函数第一条语句)。...(实参) this:它代表当前对象名(在程序中易产生二义性之处,使用this来指明当前对象;如果函数形参与成员数据同名,这时需用this来指明成员变量名) super()和this()类似,...this和super不能同时出现在一个构造函数里面,因为this必然会调用其它构造函数,其它构造函数必然也会有super语句存在,所以在同一个构造函数里面有相同语句,就失去了语句意义,编译器也不会通过...怎么理解 “被实例对象所共享” 这句话呢?就是说,一个静态成员,它是属于大伙【大伙指的是这个多个对象实例,我们都知道一个可以创建多个实例!】

    32920

    2022 最新 Java 并发编程 面试题(二)

    Lock 接口比同步方法和同步块提供了更具扩展性锁操作。 他们允许更灵活结 构, 可以具有完全不同性质, 并且可以支持多个相关条件对象。...Semaphore 有一个构造函数,可以传入一个 int 型整数 n,表示某段代码最多只有 n 个线程可 以访问,如果超出了 n,那么请等待 ,等到某个线程执行完毕这段代码块,下一个 线程再进入。...由此可以看出如果 Semaphore 构造函数中传入 int 型整数 n=1, 相当于变成了一个 synchronized 了。 45、Executors 是什么?...如果说上面的说法让你感到困惑, 那么举个例子, 假设 Thread2 中 new 了 Thread1, main 函数中 new 了 Thread2, 那么: 1、 Thread2 构造方法、 静态块是...3、 降低稳定性 JVM 在可创建线程数量上存在一个限制 ,这 个限制值将随着平台不同而不同 , 并且承受着多个因素制约, 包括 JVM 启动参数、 Thread 构造函数中请求栈 大小, 以及底层操作系统对线程限制等

    7610

    python进程和线程

    进程 进程是应用程序执行实例,每一个运行中程序就是一个进程 线程 线程是进程组成部分,一个进程可以拥有多个线程 当一个进程里只有一个线程时,叫作单线程。超过一个线程就叫作多线程。...创建线程 Python 主要通过两种方式来创建线程: 1.调用Thread构造器创建线程 使用 threading 模块中 Thread 构造器创建线程。...通过继承 Thread ,我们可以自定义一个线程,从而实例化该类对象,获得子线程。 需要注意是,在创建 Thread 子类时,必须重写从父继承得到 run() 方法。...下面有几种常见方式用来解决死锁问题: 避免多次锁定。尽量避免同一个线程对多个 Lock 进行锁定。 具有相同加锁顺序。...如果多个线程需要对多个 Lock 进行锁定,则应该保证它们以相同顺序请求加锁。 使用定时锁。

    56710

    Java 高级 --- 多线程快速入门

    通常块模型数据是在多个线程间共享,需要防止线程死锁情况发生。 总结:进程是所有线程集合,每一个线程是进程中一条执行路径。 2、为什么要使用多线程?...Thread还是使用实现Runnable接口好?...使用实现实现Runnable接口好,原因实现了接口还可以继续继承,继承了不能再继承。 6、启动线程是使用调用start方法还是run方法?...获取当前线程对象 getID() 获取当前线程ID Thread-编号  该编号从0开始 getName() 获取当前线程名称 sleep(long mill) 休眠线程 Stop() 停止线程, 常用线程构造函数...(可能没有效果) yield()让当前正在运行线程回到可运行状态,以允许具有相同优先级其他线程获得运行机会。因此,使用yield()目的是让具有相同优先级线程之间能够适当轮换执行。

    44650

    1、线程与进程区别

    通常块模型数据是在多个线程间共享,需要防止线程死锁情况发生。 总结:进程是所有线程集合,每一个线程是进程中一条执行路径。 2、为什么要使用多线程?...Thread还是使用实现Runnable接口好?...使用实现实现Runnable接口好,原因实现了接口还可以继续继承,继承了不能再继承。 6、启动线程是使用调用start方法还是run方法?...Thread-编号  该编号从0开始 | getName()| 获取当前线程名称 | sleep(long mill) | 休眠线程 | Stop() | 停止线程, | 常用线程构造函数...(可能没有效果) yield()让当前正在运行线程回到可运行状态,以允许具有相同优先级其他线程获得运行机会。因此,使用yield()目的是让具有相同优先级线程之间能够适当轮换执行。

    49820

    JAVA知识基础(九):this、super 关键字总结

    2.super关键字 在java里面,对于super关键字通常有两种用法 用在子类构造方法里(初始化用),主要是调用父默认构造方法,如果父有不止一个构造方法,可以通过super指定具体构造函数...3.关于super 与 this 关键字对比(区别) super(参数):调用基一个构造函数(应该为构造函数第一条语句) this(参数):调用本类中另一种形成构造函数(应该为构造函数第一条语句...(在程序中易产生二义性之处,使用this来指明当前对象;如果函数形参与成员数据同名,这时需用this来指明成员变量名) 调用super()必须写在子类构造方法第一行,否则编译不通过。...每个子类构造方法第一条语句,都是隐含地调用super(),如果父没有这种形式构造函数,那么在编译时候就会报错。...this和super不能同时出现在一个构造函数里面,因为this必然会调用其它构造函数,其它构造函数必然也会有super语句存在,所以在同一个构造函数里面有相同语句,就失去了语句意义,编译器也不会通过

    19740

    和对象(3)

    explicit关键字 构造函数不仅可以构造与初始化对象,对于单个参数或者除第一个参数无默认值其余均有默认值 构造函数,还具有类型转换作用。.../ 通过拷贝a1来创建一个A对象a3,此时A对象数量应该增加到3 cout << A::GetACount() << endl; // 再次输出当前A对象数量,此时应该为3 } 1...因为cout输出流对象和隐含this指针在抢占第一个参数位置,this指针默认是第一个参数也就是左操作数了。但是实际使用中cout需要是第一个形参对象,才能正常使用。...,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同 友元 友元所有成员函数都可以是另一个友元函数...匿名对象 int main() { A aa1; // 不能这么定义对象,因为编译器无法识别下面是一个函数声明,还是对象定义 //A aa1(); // 但是我们可以这么定义匿名对象,匿名对象特点不用取名字

    5810

    Java 多线程编程

    们不妨来探索一种新方法:我们不创建 Thread 子类,而是直接使用它,那么我们只能将我们方法作为参数传递给 Thread 实例,有点类似回调函数。...但是 Runnable 接口并没有任何对线程支持,我们还必须创建 Thread 实例,这一点通过 Thread 构造函数 public Thread(Runnable target); 来实现...使 用 Runnable 接口来实现多线程使得我们能够在一个中包容所有的代码,有利于封装,它缺点在于,我们只能使用一套代码,若想创建多个线程并使各个线程执行不同代 码,则仍必须额外创建,如果这样的话...你可以通过调用包含 ThreadGroup 类型参数 Thread 构造函数来指定线程属线程组,若没有指定,则线程缺省地隶属于名为 system 系统线程组。 ...假如我们程序根本不要求多个代码块并发执行,那自然不需要使用多线程;假如我们程序虽然要求多个代码块并发执行,但是却不要求乱序,则我们完全可以用 一个循环来简单高效地实现,也不需要使用多线程;只有当它完全符合多线程特点时

    38630
    领券