1 java 多线程
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPool {
public static void main(String[] args) throws InterruptedException {
ExecutorService pool = Executors.newCachedThreadPool();
for (int i = 1; i < 10; i++) {
pool.execute(new Runnable() {
@Override
public void run() {
System.out.println("thread name: " + Thread.currentThread().getName());
try {
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
});
}
Thread.sleep(10000);
System.out.println("====================");
for (int i = 0; i < 15; i++) {
pool.execute(new Runnable() {
@Override
public void run() {
System.out.println("thread name: "+Thread.currentThread().getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
pool.shutdown();
}
}
thread name: pool-1-thread-1
thread name: pool-1-thread-4
thread name: pool-1-thread-3
thread name: pool-1-thread-2
thread name: pool-1-thread-7
thread name: pool-1-thread-6
thread name: pool-1-thread-9
thread name: pool-1-thread-5
thread name: pool-1-thread-8
====================
thread name: pool-1-thread-4
thread name: pool-1-thread-7
thread name: pool-1-thread-1
thread name: pool-1-thread-9
thread name: pool-1-thread-8
thread name: pool-1-thread-3
thread name: pool-1-thread-5
thread name: pool-1-thread-2
thread name: pool-1-thread-6
thread name: pool-1-thread-11
thread name: pool-1-thread-10
thread name: pool-1-thread-13
thread name: pool-1-thread-12
thread name: pool-1-thread-14
thread name: pool-1-thread-15
Process finished with exit code 0
2 scala 多线程
2.1 测试1
package mythread
import java.util.concurrent.Executors
object ThreadDemo {
def main(args: Array[String]): Unit = {
val pool = Executors.newFixedThreadPool(5)
for (i <- 1 to 10) {
pool.execute(new Runnable {
override def run(): Unit = {
println(Thread.currentThread().getName)
Thread.sleep(1000)
}
})
}
}
}
pool-1-thread-1
pool-1-thread-4
pool-1-thread-3
pool-1-thread-2
pool-1-thread-5
pool-1-thread-1
pool-1-thread-2
pool-1-thread-5
pool-1-thread-3
pool-1-thread-4
Process finished with exit code -1
2.2 测试2
package mythread
import java.util.concurrent.{Callable, Executors, Future}
object ThreadDemo {
def main(args: Array[String]): Unit = {
val pool = Executors.newFixedThreadPool(5)
val f: Future[Int] = pool.submit(new Callable[Int] {
override def call(): Int = {
Thread.sleep(10000)
100
}
})
var status = f.isDone
println(s"Task status: $status")
Thread.sleep(15000)
status = f.isDone
println(s"Task status: $status")
if(status){
println(f.get())
}
}
}
Task status: false
Task status: true
100
Process finished with exit code -1