1.进程和线程
进程:是一个正在执行中的程序。
每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。
线程:就是进程中的一个独立的控制单元,是比进程更小的执行单位。线程只是一种为单一处理器分配执行时间的手段,
线程在控制着进程的执行。
一个进程中至少有一个线程。
2.什么是多线程?
多线程是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在,同时运行,一个进程可能包含了多个同时执行的线程。如,迅雷下载,可以下载多个任务,就是多线程。
3.创建多线程的第一种方式:继承Thread类。
(1)定义类继承Thread类
(2)覆写Thread 类中的run()方法
目的:将自定义代码存储在run方法,让线程运行。
(3)调用线程的start方法。该方法有两个作用:启动线程,调用run方法
package org.lxh.demo9.threaddemo; class MyThread extends Thread { private String name; public MyThread(String name) //通过构造方法设置属性内容 { this.name =name; } public void run(){ //覆写Thread类中的run()方法 for (int i=0;i<10;i++) { System.out.println(name+"运行,i="+i); } } } public class ThreadDemo2 { public static void main(String[] args) { MyThread mt1= new MyThread("线程A"); //创建好了一个线程 MyThread mt2= new MyThread("线程B"); mt1.start(); //启动多线程,并执行该线程的run方法,若用mt1.run();仅仅是对象调用方法,而线程创建了,并没有运行。等到把run方法执行完了,再执行下一个。 mt2.start(); //启动多线程 } }
4.sleep()和wait()比较
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备
获取对象锁进入运行状态。
时间: 2024-10-19 06:51:37