91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scala的核心程序模塊是什么

發布時間:2021-12-09 09:09:25 來源:億速云 閱讀:163 作者:iii 欄目:編程語言

本篇內容介紹了“Scala的核心程序模塊是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

讀完ManyClients.scala之后,基本上對Scala有一個大致的印象了,接著我們就開始讀Scala的核心程序模塊,從src/main/scala/net/kestrel開始。

需要介紹一些scala的package:

……  import java.util.concurrent._  import scala.actors.{Actor, Scheduler}  import scala.actors.Actor._  import scala.collection.mutable  import org.apache.mina.core.session.IoSession  ……

在Scala里面主要用到了幾個開發包,java.util.concurrent是Java 5.0平臺上的多線程框架。org.apache.mina是Apache Mina提供的NIO開發包,因為走讀主要是為了了解Scala,所以就不多說這兩個包了,讓我們著重說一下scala的一個非常有用的多線程核心包actor。

actor,在Scala中幾乎占到了非常核心的地位(可以說就是Scala的核心)。有很多人幾乎是同時聽到actor和scala的。或者是因為scala有了actor,才決定用scala的。當然,scala不僅僅有actor,在后面的代碼中,你可以看到許多語言的設計,都使得actor的設計近乎***,簡潔的,可讀性很高的代碼,可以完成非常多的工作。

不過還是讓我們從簡單的actor開始吧,一個完整的actor寫法如下:

import scala.actors.Actor  class Redford extends Actor {    def act() {      println("A lot of what acting is, is paying attention.")    }  }  val robert = new Redford  robert.start

Redford繼承一個Actor的類(關于class和object在Scala的區別,我們稍后再說),它有一個函數,也就是線程運行的內容叫做act(),當線程啟動之后,就會執行這個act()函數。需要調用這個線程的時候,創建這個對象,然后調用robert.start線程就啟動了。

這個寫法其實沒有太多的精細,只是比Java的寫法少敲了一些鍵盤而已。這倒是沒有什么錯,但是往下看,我們多import進來一個package,就可以這樣寫了:

import scala.actors.Actor  import scala.actors.Actor._  val paulNewman = actor {    println("To be an actor, you have to be a child.")  }

直接啟動一個線程,處理一個分支的業務。大括號里面的就是act()的函數體。再回過來看Kestrel的代碼:

private val deathSwitch = new CountDownLatch(1)  ……  def startup(config: Config): Unit = {      ……      // make sure there's always one actor running so scala 2.7.2      // doesn't kill off the actors library.      actor {        deathSwitch.await      }      ……  }  def shutdown(): Unit = {      ……      deathSwitch.countDown  }

注意那句注釋,在startup系統中多開一個線程,讓服務可以一直運行著……直到shutdown。

回過來我們說一下class和object的區別:

1. 對于Scala的編譯器來看,class不支持任何的static變量,在使用class的時候,必須要先用new來創建實例。而object可以看做是一個只有static內容的Java類,所以對它的調用不需要創建,直接調用即可。

2. 在設計模式里面,object可以看做是一個Singleton,也就是單例模式。所以在調用的時候,就不需要象Java一樣,老是要getInstance來獲取句柄了。

當我們看到PersistentQueue.scala的時候,一個文件中同時包含了class PersistentQueue和object PersistentQueue。就比較容易了解class和object的用法了。

“Scala的核心程序模塊是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天水市| 桦川县| 华宁县| 泰来县| 平舆县| 修水县| 南汇区| 隆尧县| 英吉沙县| 靖宇县| 界首市| 嫩江县| 宜君县| 浠水县| 定襄县| 三门峡市| 柳河县| 龙川县| 汽车| 郓城县| 库尔勒市| 社会| 嘉善县| 汝州市| 四会市| 佛坪县| 大邑县| 北海市| 汤阴县| 济南市| 高邮市| 涿州市| 阿坝县| 上犹县| 友谊县| 水城县| 方城县| 澎湖县| 湄潭县| 大石桥市| 西吉县|