首先区分明白线程和进程的概念:
进程: 是系统运行程序的基本单位,因此进程是动态的.通俗的将,一个进程就是一个正 在执行的一个程序.
线程:执行进程的最小基本单元,一个进程中会有多个线程.
多线程:几乎在同一时间执行多个线程;实质上,在同一个处理器中多线程本质仍是单线程.真正意义实现多线程需要多个处理器同时执行
多线程就是在分时利用CPU
实现多线程并且启动的两种方法
1.继承Thread类,重写run()方法。用start()方法启动线程。
2.实现Runable接口,实现run方法。用new Thread(Runnable target).start()来启动。
public class Test {
public static void main(String[] args) {
Runner1 run1 = new Runner1();
Runner2 run2 = new Runner2();
Thread thread1 = new Thread(run1);
Thread thread2 = new Thread(run2);
// thread1.start();
// thread2.start();
thread1.run();
thread2.run();
}
}
class Runner1 implements Runnable {
public void run() {
for (int i=0;i<10;i++) {
System.out.println("进入Runner1运行状态—————" + i);
}
}
}
class Runner2 implements Runnable {
public void run() {
for (int i=0;i<10;i++) {
System.out.println("进入Runner2运行状态=====" + i);
}
}
}
运行结果
实现Runnable接口方式
1、定义Runnable接口的实现类,并重写其中的run方法。run()方法的方法体是线程执行体。
class SonThread implement Runnable{
public void run(){
......
}
}
2、创建Runnable接口实现类的实例。
sonThread s1=new SonThread();
3、用该实例作为Thread的target来创建Thread对象。
Thread t1 =new Thread(s1);
4、调用该对象的start()方法启动线程。
t1.start();
5、可以这样简写
Thread t1=new Thread(new SonThread()).start();
【常用方法】
1、返回对当前正在执行的线程对象的引用
currentThread();
2、返回此线程的标识符
getId();
3、返回此线程的名称
getName();
4、返回此线程的优先级
getPriority();
5、测试这个线程是否还处于活动状态。
活动状态就是线程已经启动且尚未终止,线程处于正在运行或准备运行的状态。
isAlive();
6、使当前正在执行的线程以指定的毫秒数“休眠”(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。
sleep(long millis);
7、中断这个线程。
interrupt();
8、测试这个线程是否是守护线程。
isDaemon();
9、将此线程标记为 daemon线程或用户线程。
setDaemon(boolean on);
10、更改此线程的优先级。
setPriority(int newPriority);