java中suspend方法_java-Start / Suspend / Resume / Suspend…由其他类调用的方法

我想实现一个Anytime k-NN分类器,但是我找不到在特定时间段内调用“ classify(…)”方法的方法,将其挂起,在挂起该方法之前获取可用结果,然后继续方法一段特定的时间,将其挂起,在该方法挂起之前获得可用的结果,依此类推…

我使用数据结构来获取近似结果.当算法遍历数据结构时,它将最终遇到实际的训练数据向量.

public class AnytimeKNN{

public int classify(queryPoint, k){

class_label;

1. Assign an initial value to 'class_label'.

2.while(not actual training data vectors are encountered){

1. traverse the data structure

2. assign a new value to 'class_label'

}

}

}

我想以以下方式从主方法中调用“ classify(..)”方法:

>启动方法“ classify(..)”

>为“ class_label”分配初始值时,暂停方法“ classify(..)”.

>获取初始标签

>继续方法’classify(..)’X时间

>暂停方法’classify(..)’

>获取新的“ class_label”

>在X时间内恢复方法’classify(..)’

等等…

提前致谢!

解决方法:

听起来像是并行编程中典型的生产者-消费者方案.在Java中,您可以使用两个二进制信号量来解决此问题.一个告诉分类器应该运行,另一个告诉主线程获取下一个结果.分类器等待其信号量,直到由主线程触发.主线程的行为类似.

当然,还有其他选择,例如使用并发队列.分类器将其结果放入队列,主线程将其拉出,等待是否没有新结果.这将是我最喜欢的解决方案,但是也许您有理由要在固定的时间间隔内启动和停止该方法.

标签:concurrent-programming,java,multithreading,concurrency

来源: https://codeday.me/bug/20191013/1907248.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值