Java如何创建多线程程序?
线程是在自己的线程上运行的程序执行单元。多线程是Java语言创建时所具有的核心功能。可以说,这种多线程功能就像在CPU上运行每个程序一样,尽管计算机仅安装了一个CPU。
要使用Java创建Thread程序,我们可以扩展java.lang.Thread类并重写run()方法。但是我们知道Java类只能从单个类扩展,而扩展Thread类使我们的类不能从另一个类继承。为了解决此问题,引入了一个接口java.lang.Runnable。
让我们在下面看到简化的演示类。在下面的程序中,我们将有三个独立的线程执行,即主线程,线程1和线程2。
package org.nhooo.example.lang; public class ThreadDemo extends Thread { public static void main(String[] args) { //创建此类的实例。 ThreadDemo thread1 = new ThreadDemo(); //创建一个可运行的对象。 Thread thread2 = new Thread(new Runnable() { public void run() { for (int i = 0; i < 5; i++) { sayHello(); } } }); //设置线程优先级,正常的线程优先级为5。 thread1.setPriority(4); thread2.setPriority(6); //开始执行线程1和线程2 thread1.start(); thread2.start(); for (int i = 0; i < 5; i++) { sayHello(); } } public void run() { for (int i = 0; i < 5; i++) { sayHello(); } } /** * The synchronized modifier ensure that two threads cannot execute the block * at the same time. */ private static synchronized void sayHello() { for (int i = 0; i < 10; i++) { System.out.println("Thread [" + Thread.currentThread().getName() + "] ==> Hi..."); } try { //使当前正在执行的线程随机睡眠 //毫秒 Thread.sleep((long) (Math.random() * 1000 + 1000)); } catch (InterruptedException e) { e.printStackTrace(); } //使当前正在执行的线程对象暂时暂停 //并允许其他线程执行。 Thread.yield(); } }