JAVA基础学习之线程

来源:互联网 发布:linux system-auth 编辑:程序博客网 时间:2024/06/01 07:56

一、进程、线程的区别

1.进程就是在操作系统上执行的一个程序;比如:qq.exe
a.进程之间没有关系,都是相对独立的
b.每个进程独享一部分内存及其他系统资源
c.操作系统允许多进程(任务)处理模式
2.线程是进程的一个实体表现
a.进程由多个线程组成
b.一个进程中的多个线程共享该进程的资源
c.一个进程中的多个线程支持并发(多线程)
3.cpu的时间片轮转原理和多线程的关系

二、创建线程的方法

1.Thread类派生
1.继承Thread类
2.重写run()方法、该方法用来描述该线程启动之后执行的工作
3.调用线程的地方使用该线程对象的start()方法即可启动该线程
2.实现Runnable接口
1.实现Runnable接口
2.重写run()方法、该方法用来描述该线程启动之后执行的工作
3.调用线程的地方用该Runnable对象创建一个Thread对象
4.用Thread对象的start()方法即可启动该线程

三、线程生命周期

创建   就绪   运行  堵塞   死亡

四、线程常用方法

五、currentThread

Thread.currentThread()可以获取到当前的线程对象,该对象拥有所有线程相关的状态描述。需要注意的是currentThread方

法需要使用类名调用才能得到正确的状态描述。获得线程对象currentThread后,具有以下常用方法:

六、join方法

作用:阻塞执行线程
例如在t1线程中调用t2.join(),则需要t2线程执行完后t1方能继续执行

七、死锁:死锁的原因是由于 两个线程相互等待 对方已被锁定的资源

八、多线程资源共享

1、线程异步
2、线程同步:同一时刻只能有一个线程操作资源

Synchronized 同步锁

九、Timer(调度)、TimerTask(任务)

Timer类是JDK提供的用于简单调度的类,该类可以将一个TimerTask任务按照一定的时间规律循环执行。TimerTask(任务)和Timer(调度)
    TimerTask是一个抽象任务类,需要重写run方法。
    Timer类使用schedule方法执行调度任务

使用语法:
Timer time = new Timer();
TimerTask task = new TimerTask();
time.schedule(task, 1000, 5000); 
(1)task表示要执行的任务。
(2)1000表示第一次执行时间距离当前时间的毫秒数。
(3)5000表示每次执行任务的间隔时间(单位:毫秒)。

十、监听模式

我们称在主线程中启动一个循环任务,不间断的获取目标程序的状态的运行模式,称为监听模式。

十一、内部类

1、定义:
在某些情况下,可以把一个类放到另一个类的内部,这个定义在其他类内部的类就称为内部类。
例子:
2、内部类的分类:成员内部类、局部内部类和匿名内部类
1)、成员内部类:
非静态成员内部类 :和外部类的方法、属性等同级、没有static修饰

静态成员内部类(静态内部类):和外部类的方法、属性等同级、有static修饰

注意:非静态成员内部类中不能有静态成员
非静态成员内部类创建对象时需要强制绑定在一个外部类的对象上,而静态成员内部类则不需要

2)、局部内部类:把一个类定义在方法里,该类就成了局部内部类,局部内部类只在该方法里有效
3)、匿名内部类:适合创建只需要一次使用的类