I ran into a strange problem this weekend where I noticed a huge difference between the way a Scala Future
and a Thread
worked for the exact same code. I think I’m pretty aware of the obvious differences between futures and threads, so this really caught me by surprise. If/when I figure out why there was such a difference in behavior for the given problem I’ll post that information here.
A Scala Thread example
While that problem will haunt me for a while, what I really want to post here today is a simple Scala Thread
example:
// scala thread example for (i <- 1 to 100) { val thread = new Thread { override def run { // your custom behavior here } } thread.start Thread.sleep(50) // slow the loop down a bit }
As you can see, creating a Thread
in Scala is just like creating a Thread
in Java, with a few slight syntactical differences. The most important parts are to define your custom behavior in the run
method, and to call start
when you’re ready to start your thread.
A Java/Scala Runnable example
Of course you can also use a Java Runnable
to create a Thread
. I just typed the following code here and haven’t tested it, but a similar Runnable
example will look something like this:
// define a scala runnable class MyThread extends Runnable { def run { // your custom behavior here } } // start your runnable thread somewhere later in the code new Thread(new MyThread)).start
Thread and Runnable resources
See the following links for good Java Thread
and Runnable
examples, which can easily be converted to Scala:
As mentioned, if I ever figure out why a Future
and a Thread
behaved so differently for my problem, I’ll post that information here.
this post is sponsored by my books: | |||
#1 New Release |
FP Best Seller |
Learn Scala 3 |
Learn FP Fast |