PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍

简介: PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍

 代码的问题是不可能终止线程,因为它正在等待队列中的新元素,所以中断标志永远不会恢复:

正在运行代码的线程被中断。

BlockingQueue#poll()抛出InterruptedException并清除中断标志。

当标志被清除时,while循环条件(!Thread.currentThread().isInterrupted())为ture。

为防止这种行为,请始终读取InterruptedException并在方法显式(通过声明throwing InterruptedException)或隐式(通过声明/抛出原始Exception)抛出时恢复中断标志:

T getOrDefault(Callablesupplier,T defaultValue){

try{

return supplier.call();

}catch(InterruptedException e){

logger.error("Got interrupted while retrieving value.",e);

Thread.currentThread().interrupt();

return defaultValue;

}catch(Exception e){

logger.error("Got exception while retrieving value.",e);

return defaultValue;

}

}

注意使用专用的执行器进行阻塞操作

开发人员通常不希望因为一个“慢动作”而使整个服务器无响应。不幸的是,对于RPC,响应时间通常是不可预测的。

假设一台服务器有100个工作线程,并且有一个端点,它以100 RPS调用。它在内部进行RPC调用,通常需要10毫秒。在某个时间点,这个RPC的响应时间变成了2秒,而服务器在尖峰期间唯一能做的就是等待这些调用,而其他端点根本无法访问。

GET

Path("/genre/{name}")

Produces(MediaType.APPLICATION_JSON)

public Response getGenre( PathParam("name")String genreName){

Genre genre=potentiallyVerySlowSynchronousCall(genreName);

return Response.ok(genre).build();

}

解决问题的最简单方法是将进行阻塞调用的代码提交到线程池:

GET

Path("/genre/{name}")

Produces(MediaType.APPLICATION_JSON)

public void getGenre( PathParam("name")String genreName, Suspended AsyncResponse response){

response.setTimeout(1L,TimeUnit.SECONDS);

executorService.submit(()->{

Genre genre=potentiallyVerySlowSynchronousCall(genreName);

return response.resume(Response.ok(genre).build());

});

}

注意MDC值的传播

MDC(映射诊断上下文)通常用于存储单个任务的特定值。例如,在Web应用程序中,它可能为每个请求存储一个请求ID和一个用户ID,因此MDC使查找与单个请求或整个用户活动相关的日志条目变得更加容易。

不幸的是,如果代码的某些部分在专用线程池中执行,则来自提交任务的线程的MDC值不会传播。在以下示例中,第7行的日志条目包含“requestId”,而第9行的日志条目不包含:

GET

Path("/genre/{name}")

Produces(MediaType.APPLICATION_JSON)

public void getGenre( PathParam("name")String genreName, Suspended AsyncResponse response){

try(MDC.MDCCloseable ignor

相关文章
|
网络安全 区块链 数据安全/隐私保护
Wiki质押Expo币挖矿项目开发构建
Wiki质押Expo币挖矿项目开发构建
DeFi流动性质押项目系统开发详细步骤/方案逻辑/案例开发/源码程序
DeFi (Decentralized Finance) pledge mining is a blockchain based financial activity that combines pledge and mining mechanisms. It provides a new way to provide benefits to participants and promote the development of a centralized financial ecosystem.
|
前端开发 测试技术 区块链
ARBT阿尔比特质押挖矿系统开发案例设计/项目架构/源码版
function mintToken(address recipient, uint256 amount) public returns (uint256 remaining) { if (balances[recipient] + amount > TotalSupply) { balances[recipient] = TotalSupply;
dapp丨defi代币合约质押项目系统开发逻辑详细/规则说明/案例设计/步骤细节/源码程序
The smart contract liquidity mining system is a financial application system based on smart contract technology, aimed at providing liquidity and receiving rewards by injecting users' funds into the liquidity pool and locking them in the smart contract.
|
安全 区块链
BSC链盲盒游戏系统开发详情案例丨dapp链上合约盲盒游戏系统开发方案项目/逻辑规则/成熟技术/源码功能
  DApp(去中心化应用程序)盲盒游戏系统的开发涉及到在区块链上构建和运行盲盒游戏。
|
开发框架 前端开发 JavaScript
合约挖矿/RNB质押挖矿模式系统模块及功能开发搭建
合约挖矿/RNB质押挖矿模式系统模块及功能开发搭建
|
区块链
区块链游戏质押挖矿系统开发规则源码解析
区块链游戏质押挖矿系统开发规则源码解析
|
算法 区块链
Defi质押挖矿系统开发源码二开示例
开发一个DeFi质押挖矿系统需要一定的技术知识和经验,如果您有一定的技术基础和开发经验,可以考虑对开源代码进行二次开发。以下是一些可用于DeFi质押挖矿系统二次开发的开源代码:
|
区块链
dapp质押挖矿系统开发设计概述
DApp(去中心化应用)质押挖矿系统是基于区块链技术构建的一种去中心化应用,它结合了质押和挖矿的概念,让用户可以通过质押代币来参与挖矿活动并获得相应的奖励。
|
安全 区块链
DAPP合约代币燃烧分红系统开发/规则案例/方案逻辑/项目开发/源码版
  DAPP是去中心化应用程序/分布式的应用程序,是底层区块链平台生态上衍生的各种分布式应用,也是区块链世界中的基础服务提供方。

热门文章

最新文章