Java多线程
总结内容
1. 进程是什么,线程又是什么
进程就是正在运行的程序,是操作系统运行程序是产生的,它是独立存在的,进程之间互不干扰。
线程是进程的一个子集,是进程中的实际运作单位,开发人员可以通过操作线程进行多处理器编程。
2. 进程和线程的区别
- 根本区别:
进程是操作系统分配资源的基本单位;
线程是CPU调度和执行的基本单位; - 其他区别:
操作系统中可以同时运行多个进程,一个进程又可以执行多个线程。系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系
统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
3. 为什么要学习多线程
1)在耗时的操作时使用线程,可以提高程序运行的速度
2)在并行操作时使用线程,提高并行的速度
3)多CPU系统中使用线程,提高CPU利用率
4)改善程序结构,对一个程序进行拆分,降低程序执行难度
5)进程之间的通信十分不方便,同一个进程中的线程可以进行数据共享
4. 实现多线程的方式
在 java 中实现线程的方式有 2 种,一种是继承 Thread,一种是实现 Runnable 接口。
- 通过继承Thread实现:
继承 Thread 实现多线程,必须重写 run 方法。
继承语法:
class MyThread extends Thread{
private int ticket = 5;
public void run(){
for (int i=0;i<10;i++)
{
if(ticket > 0){
System.out.println("ticket = " + ticket--);
}
}
}
}
public class ThreadDemo{
public static void main(String[] args){
new MyThread().start();
new MyThread().start();
new MyThread().start();
}
}
运行结果:
ticket = 5
ticket = 4
ticket = 5
ticket = 5
ticket = 4
ticket = 3
ticket = 2
ticket = 1
ticket = 4
ticket = 3
ticket = 3
ticket = 2
ticket = 1
ticket = 2
ticket = 1
每个线程单独卖了5张票,即独立的完成了买票的任务,但实际应用中,比如火车站售票,需要多个线程去共同完成任务,在本例中,即多个线程共同买5张票。
- 通过实现Runnable:
实现 Runnable 接口,必须重写 run 方法。
实现语法:
class MyThread implements Runnable{
private int ticket = 5;