基本概念
概念:多线程是多任务的一种特别的形式,一条线程指进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程能满足程序员变现高效率的程序来达到充分利用cpu的目的。
线程和进程的区别:
线程的创建
方法一:通过实现Runnable接口;
首先定义线程类实现Runnable接口;
然后声明线程:Thread myThread = new Thread(target); //target为Runnable接口类型
为了实现Runnable,线程类需要执行一个方法调用run();
新线程创建之后,调用start()方法开始运行;
下面是一个创建线程并开始执行的实例:
public class TestThread1 {
public static void main(String args[]) {
Runner1 r = new Runner1();
// r.start(); //已经继承了Thread,不需要再newThread,直接调用,就可实现多线程
r.run();
Thread t = new Thread(r); //声明线程
t.start(); //启动线程
for(int i=0; i<100; i++) {
System.out.println("Main Thread:------" + i);
}
}
}
class Runner1 implements Runnable { //实现Runnable借口
//class Runner1 extends Thread { //继承Thread
public void run() {
for(int i=0; i<100; i++) {
System.out.println("Runner1 :" + i);
}
}
}
方法二: 通过继承Thread类本身
创建一个线程的第二种方法是创建一个新的类,该类继承 Thread 类,然后创建一个该类的实例。
下面是一个创建线程并开始执行的实例:
public class TestThread1 {
public static void main(String args[]) {
Runner1 r = new Runner1();
r.start(); //已经继承了Thread,不需要再newThread,直接调用,就可实现多线程
// r.run();
// Thread t = new Thread(r); //声明线程
// t.start(); //启动线程
for(int i=0; i<100; i++) {
System.out.println("Main Thread:------" + i);
}
}
}
//class Runner1 implements Runnable { //实现Runnable借口
class Runner1 extends Thread { //继承Thread
public void run() {
for(int i=0; i<100; i++) {
System.out.println("Runner1 :" + i);
}
}
}
线程的优先级
每一个 Java 线程都有一个优先级,这样有助于操作系统确定线程的调度顺序。
Java 线程的优先级是一个整数,其取值范围是 1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。
默认情况下,每一个线程都会分配一个优先级 NORM_PRIORITY(5)。
具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先级不能保证线程执行的顺序,而且非常依赖于平台。