开发工具与关键技术:Java
作者:吴永旗
撰写时间:2019年5月10日
1.理解进程与线程
进程是系统进行资源分配和调度的基本单位,可以将进程理解为一个正在 执行的程序
线程:线程是程序执行的小单位,一个进程可由一个或多个线程组成
总结:操作系统可以同时执行多个任务,每个任务就是进程;进程可以同时执行多个 任务,每个任务就是线程
2.线程创建方法有以下两种方式:
创建一个Thread类,或者一个Thread的子类对象
创建一个实例Runnable接口的类的对象
实现骤:
Thread类:定义类继承thread类—>重写Thread的run的方法—>创建线程对象—>用start()方法启动线程
Runnable接口:定义类继承Runnable接口—>重写Thread的Runnable的方法—>创建Runnable实现类的实例, 并以此实例作为Thread的target来创建Thread对 象用—>start()方法启动线程
3.Thread类构造方法:
Thread() 创建一个线程对象
Thread(String name) 创建一个具有指定名称的线程对象
Thread(Runnable target) 创建一个基于Runnable接口实现线程对象
Thread(Runnable target,String name ) 创建一个基于Runnable接口实现类,并指定名称的线程对象
5.Thread类的常用方法
Public void run() 线程相关代码在该方法中,一般重写
Public void start() 启动线程的方法
Public static void sleep(long m) 线程休眠m毫秒的方法,作用:指定的毫秒数内让正在执行线程停止
Public void join() 优先执行调用join方法的线程
Publc final void join()作用:等待调用该方法的线程结束才能执行
Public final void join(long millis)等待该线程终止的最长时间为毫秒,如果millis为0则意味着一直等下去1
6.为什么要实现Runnable接口?
–java不支持多继承
–不打算重写Thread类的其他方法
7.线程的生命周期
8.线程优先级
max_priority:线程的最高优先级10;
min_ priority: 线程的最低优先级1;
norm_ priority: 线程的默认优先级5;
9.优先级相关方法:
Public int getPriority() 获取优先级方法
Public void setPriority(int newPriority) 设置优先级方法
10.银行存取款时候为了保证不允许其他线程对账户余额进程进行操作,需要将bank对象进行锁定使用关键字synchronized实现
使用关键字synchronized实现方法有:
使用同步代码块 Synchronized(obj){};
同步方法:public Synchronized void saveAcount(){};
静态同步方法:public static Synchronized void saveAcount(){};
11.线程间通信方法:
Wait()方法:中断方法执行,使线程等待
notify()方法:唤醒处于等待的某一个线程,使其结束等待;
notifyAll()方法::唤醒所有处于等待的线程,使其结束等待;
注意:wait()、notify()、notifyAll()方法是Object的final方法,无法被重写