添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

上文我们验证了Netty服务端线程,这次我们验证客户端线程(当然,这需要与前文服务端代码配合测试).

EventLoopGroup group = new NioEventLoopGroup();
Bootstrap bootstrap = new Bootstrap();
bootstrap.group(group)
       .channel(NioSocketChannel.class)
       .option(ChannelOption.SO_KEEPALIVE, true)
       .option(ChannelOption.TCP_NODELAY, true)
       .handler(new ChannelInitializer<NioSocketChannel>() {
           @Override
           protected void initChannel(NioSocketChannel ch) {
               ChannelPipeline channelPipeline = ch.pipeline();
               channelPipeline.addLast(new StringDecoder());
               channelPipeline.addLast(new StringEncoder());
               channelPipeline.addLast(new ClientInHandler());//自定义输入Handler
       });
bootstrap.connect(new InetSocketAddress("127.0.0.1", 8080));

输入Handler代码

@Slf4j
public class ClientInHandler extends SimpleChannelInboundHandler<String> {
    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) {
        System.out.println("ClientInHandler-channelRead0: " + Thread.currentThread().getName());
        System.out.println("客户端接收到服务端数据: " + msg);

既然客户端还要接收服务端的数据,我们在HeadContext的channelRead方法也打印一行

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    System.out.println("HeadContext-channelRead: " + Thread.currentThread().getName());
    ctx.fireChannelRead(msg);

接下来我们首先执行服务端代码(在前文中,自己查找),然后再执行客户端代码,我们发现

验证Netty客户端线程_netty
两个Handler使用的是同一个线程.

稍微改动下代码
验证Netty客户端线程_Netty_02
再次启动服务,打印内容如下
验证Netty客户端线程_java_03
两个不同的线程.

也就是说,当用户手动指定Handler执行的线程时,那么就是指定的线程执行Handler的代码,否则就是默认的IO线程执行.

//获得当前发布的版本 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //耗时的操作--获取某个应用在AppStore上的信息,更改id就行 __weak Log

asp.net 存储过程返回值 存储过程返回表数据

1、返回一个数值 declare @count int exec @count = testReturn \'111\',\'222\' select @count @count就是返回的数值是int类型 2、返回一个数据表 首先要新建一个数据表 CREATE TABLE test ( TMP_ORDER_ID varchar(20) 然后将返回的数据插入到表中 insert

java 耗时计算 java耗时操作异步

JDK 8 是一次重大的版本升级,新增了非常多的特性,其中之一便是 CompletableFuture。自此从 JDK 层面真正意义上的支持了基于事件的异步编程范式,弥补了 Future 的缺陷。 在我们的日常优化中,最常用手段便是多线程并行执行。这时候就会涉及到 CompletableFuture 的使用。 作者:京东科技 张天赐前言JDK 8 是一次重

nexus docker部署 docker启动nexus

备注:首先在linux环境安装Java环境和Docker,私服需要的服务器性能和硬盘存储要高一点,内存不足可能到时启动失败,这里以4核8GLinux服务器做演示一:基于Docker安装nexus31.下载nexus3镜像 docker pull sonatype/nexus3 2.启动nexus3容器,将容器内部/var/nexus-data挂载到宿主机/usr/local/boris/nexus