黑马程序员——Java线程技术

来源:互联网 发布:添加字段sql 编辑:程序博客网 时间:2024/06/12 19:24

定义:

进程:指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程。

线程:指进程中的一个执行任务,一个进程中可以运行多个线程,多个线程可共享数据。

多进程:操作系统中同时运行的多个程序。

多线程:在同一个进程中同时运行的多个任务。

多线程特性:随机性。

原因:CPU在瞬间不断切换去处理各个线程而导致,可以理解成多个线程在抢CPU资源。 

多线程存在意义:多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率,而不是为了提供运行效率。

进程与线程的区别:

1、进程有独立的进程空间,进程中的数据存放空间(堆空间和栈空间)是独立的。

2、线程的堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的。

创建线程方式:

1、继承Thread类:

子类覆写父类中的run方法,将线程运行的代码存放在run中,建立子类对象的同时线程也被创建,通过调用start方法开启线程。

2、实现Runnable接口:子类覆盖接口中的run方法,通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数,Thread类对象调用start方法开启线程。

两种线程创建方式比较:
1、extends Thread:简单、不能再继承其他类、同份资源不共享。
2、 implements Runnable:多个线程共享一个目标资源,适合多线程处理同一份资源,该类还可以继承其他类,也可以实现其他接口。

举例:

class MyThread extends Thread{private String name;public MyThread(String name) {super();this.name = name;}public void run(){System.out.println(name+"启动!");}}class YourThread implements Runnable{private String name;public YourThread(String name) {this.name = name;}public void run() {for (int i = 0; i < 3; i++) {System.out.println(Thread.currentThread().getName()+"第"+i+"次启动!");}}}public class Demo1{public static void main(String[] args) {for (int i = 0; i < 100; i++) {if(i == 50){new MyThread("MY").start();new Thread(new YourThread(""),"Your").start();}}}}
线程的生命周期:
NEW-------新建状态,至今尚未启动的线程处于这种状态。
RUNNABLE-------运行状态,正在 Java 虚拟机中执行的线程处于这种状态。
BLOCKED-------阻塞状态,受阻塞并等待某个监视器锁的线程处于这种状态。
WAITING-------冻结状态,无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。
TIMED_WAITING-------等待状态,等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。
TERMINATED-------已退出的线程处于这种状态。

停止线程:run方法结束。


0 0
原创粉丝点击