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();
}
}