scala actor 多线程测试

package com.Actor

import java.io.File
import scala.actors.Actor
import scala.io.Source

/**
  * author pg
  * date 2018-12-17
  */
//本程序是用scala  原生的actor进行多线程读取目录文件的测试,目录下面总共是1000多一点的文件!逻辑是一个文件启动一个actor
class ScalaActor(realpath: String) extends Actor {
  override def act(): Unit = {
    // react  或者是receive都可以经过测试react的速度是receive的三倍左右
    react {
      case "file" => {
        val file = Source.fromFile(realpath)
        for (line <- file.getLines) {
//            println(line)
        }
        sender ! "文件读取完毕"
        file.close()
      }

    }
  }
}

object test {

  def main(args: Array[String]): Unit = {
    val time1 = System.currentTimeMillis()
    println(time1)
    readFile("D:\\whois\\result\\turn2\\1-10.6G")
    val time2 = System.currentTimeMillis()
    println(time2)
    println(time2 - time1)
  }


  def readFile(directory: String): Unit = {

    val file = new File(directory);
    var count = 0;
    if (file.isDirectory) {
      println("检测到目录")
      var arr = file.listFiles()
      for (ar <- arr) {
        var realpath = ar.getAbsolutePath
        //每一个文件启动一个线程
        val actor = new ScalaActor(realpath)
        actor.start()
        //!是异步读取  !?是同步读取
        val content: Any = actor !? "file"
        println(content)

      }
    }
  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我先森

鼓励一个吧,哈哈

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

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

打赏作者

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

抵扣说明:

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

余额充值