scala使用多线程示例

写的一个scala多线程的小demo,以备后用

Runnable/Callable

区别:Runnable无返回值,Callable线程执行完有返回值

Runnable示例

import java.util.concurrent.{Executors, ExecutorService}

object Test {
  def main(args: Array[String]) {
    //创建线程池
    val threadPool:ExecutorService=Executors.newFixedThreadPool(5)
    try {
      //提交5个线程
      for(i <- 1 to 5){
        //threadPool.submit(new ThreadDemo("thread"+i))
        threadPool.execute(new ThreadDemo("thread"+i))
      }
    }finally {
      threadPool.shutdown()
    }
  }

  //定义线程类,每打印一次睡眠100毫秒
  class ThreadDemo(threadName:String) extends Runnable{
    override def run(){
      for(i <- 1 to 10){
        println(threadName+"|"+i)
        Thread.sleep(100)
      }
    }
  }
}

Callable示例

import java.util.concurrent.{Callable, FutureTask, Executors, ExecutorService}

object Test {
  def main(args: Array[String]) {
    val threadPool:ExecutorService=Executors.newFixedThreadPool(3)
    try {
      val future=new FutureTask[String](new Callable[String] {
        override def call(): String = {
          Thread.sleep(100)
          return "im result"
        }
      })
      threadPool.execute(future)
      println(future.get())
    }finally {
      threadPool.shutdown()
    }
  }
}
时间: 2024-11-06 09:37:20

scala使用多线程示例的相关文章

java多线程示例

/* 多线程示例. 创建多线程有两种方法. 一种继承Thread类,并且覆盖Thread中的run方法,并且调用其start方法. startt方法的作用是开启线程,并且调用run方法. 复写run方法的目的是:将自定义的代码存储在run方法中,让线程运行. */ class Demo extends Thread{     public void run(){         for(int x =0; x <40;x++){             System.out.println(&quo

linux多线程示例

1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 #include <pthread.h> 5 6 typedef void* (*fun)(void*); 7 8 fun fun1, fun2; 9 10 pthread_mutex_t pmu = PTHREAD_MUTEX_INITIALIZER; 11 pthread_cond_t cond; 12 pthread_t

scala.Enumeration 枚举示例

简介 在Scala中并没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举.扩展Enumeration类后,调用Value方法来初始化枚举中的可能值. 内部类Value实际上是一个抽象类,真正创建的是Val.因为实际上是Val,所以可以为Value传入id和name 如果不指定,id就是在前一个枚举值id上加一,name则是字段名 scala枚举示例 object TrafficLightColor extends Enumeration {   type TrafficLigh

BMDThread控件动态创建多线程示例

http://www.cnblogs.com/railgunman/archive/2010/12/08/1900688.html BMDThread控件是一套相当成熟的线程控件,使用它可以让你快速的创建.管理线程.    可以到CSDN或者盒子上下载BMDThread控件.    下面我们用多线程模拟客户端发送文件的例子来简单认识一下它.    在窗体中放置一个TIDClient,TBMDThread,TBMDThreadGroup.三个TEdit,两个按钮(开始线程,结束线程),一个MEMO

Java多线程示例(sleep,join,yield,wait,notify)

主线程等待子线程的多种方法 synchronized浅析 sleep 是静态方法,Thread.sleep(xx)谁调用谁睡眠. join 是合并方法,当前线程调用其他线程xx.join()则等到xx结束才能运行 yield 当前线程让出cpu进入就绪队列. wait,noitfy,synchronized配合使用对资源进行管理. synchronized(this)以及非static的synchronized方法(至于static synchronized方法请往下看),只能防止多个线程同时执

一个简单的多线程示例

项目中要用 到多线程,需求: 论坛发帖,如果是我们的老师用户发帖,会向所有用户发一条信息,提醒用户去看贴.代码这么实现,老师保存文章后,新写一个线程,获取所有的用户,循环插入信息 具体代码: 通过构造把 动态参数传进来,插入到数据库中,就是这么简单. 如何调用:

C# 多线程示例

static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(TestMethod)); Thread t2 = new Thread(new ParameterizedThreadStart(TestMethod)); t1.IsBackground = true; t2.IsBackground = true; t1.Start(); t2.Start("hello"); Console.ReadK

c#(asp.net) 多线程示例,用于同时处理多个任务

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Threading; using System.Web.UI.WebControls; public partial class muti_thread : System.Web.UI.Page { protected void Page_Load(object

Java中使用ServerSocket和Socket的多线程示例

开始...1.服务器端: public class ServerSocketApp { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(9999); System.out.println("服务已启动"); while (true) { Socket socket = serverSocket.accept(); System.out.println(