首页
登录 | 注册

Java知多少(59)创建多线程

到目前为止,我们仅用到两个线程:主线程和一个子线程。然而,你的程序可以创建所需的更多线程。例如,下面的程序创建了三个子线程:

 1 // Create multiple threads.
 2 class NewThread implements Runnable {
 3     String name; // name of thread
 4     Thread t;
 5     NewThread(String threadname) {
 6         name = threadname;
 7         t = new Thread(this, name);
 8         System.out.println("New thread: " + t);
 9         t.start(); // Start the thread
10     }
11 
12     // This is the entry point for thread.
13     public void run() {
14         try {
15             for(int i = 5; i > 0; i--) {
16                System.out.println(name + ": " + i);
17                Thread.sleep(1000);
18             }
19         } catch (InterruptedException e) {
20             System.out.println(name + "Interrupted");
21         }
22         System.out.println(name + " exiting.");
23     }
24 }
25 
26 class MultiThreadDemo {
27     public static void main(String args[]) {
28         new NewThread("One"); // start threads
29         new NewThread("Two");
30         new NewThread("Three");
31         try {
32             // wait for other threads to end
33             Thread.sleep(10000);
34         } catch (InterruptedException e) {
35             System.out.println("Main thread Interrupted");
36         }
37         System.out.println("Main thread exiting.");
38     }
39 }

程序输出如下所示:

New thread: Thread[One,5,main]
New thread: Thread[Two,5,main]
New thread: Thread[Three,5,main]
One: 5
Two: 5
Three: 5
One: 4
Two: 4
Three: 4
One: 3
Three: 3
Two: 3
One: 2
Three: 2
Two: 2
One: 1
Three: 1
Two: 1
One exiting.
Two exiting.
Three exiting.
Main thread exiting.

如你所见,一旦启动,所有三个子线程共享CPU。注意main()中对sleep(10000)的调用。这使主线程沉睡十秒确保它最后结束。

系列文章:

Java知多少(上)

Java知多少(中)


相关文章

  • 已经更新100+篇~ 关注公众号,BAT大神带你飞~ 听说你还在写Java,看Spring,看Dubbo,今天SpringCloud, 明天Dubbo3.X新版本... 10个开发9个半在写Java后台?框架层出不穷,天天学新东西怕被甩淘汰 ...
  • 一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实 ...
  • 为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?
    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在 ...
  • java游戏开发杂谈
    线程,让游戏拥有了动态变化的能力. java的图形界面,在启动的时候,就开始了一个线程. 这个线程负责处理:JFrame.JPanel等的绘制.事件处理. 它是由操作系统调用的,在程序启动时开启,程序关闭时消亡. 这个线程里执行的逻辑,支撑 ...
  • 使用 ASP.NET Core MVC 创建 Web API(五)
    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二)  使用 ASP.NET Core MVC ...
  • 使用 ASP.NET Core MVC 创建 Web API(二)
    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一)     六.添加数据库上下文       数据库上下文是使用Entity Framework Core功能的主 ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.081 s.
京ICP备10005923号