1、线程和进程
多进程(程序):操作系统中能(同时)运行多个任务(程序)。
多线程(程序执行流程):在同一个应用程序中有多个顺序流(同时)执行。
2、创建线程的方法
(1)定义一个线程类,它集成类Thread并重写run方法,方法run()称为线程体。启动线程时使用start方法。
由于Java只支持单继承,用这种方法定义的类不能再继承其他类。
// MyThread extends Thread
MyThread t = new MyThread();
(2)提供一个实现接口Runnable的类作为线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体。
// RunnableImpl implements Runnable
RunnableImpl ri = new RunnableImpl();
Thread t = new Thread(ri);
t.start();
3、控制线程的常见函数
(1)中断线程:
-- Thread.sleep():休眠之后转到就绪状态而不是运行状态;使用时必须捕获异常。
-- Thread.yield():当前线程主动让出所使用的CPU,重新竞争。
(2)设置线程的优先级:
-- getPriority():最大优先级是10,最小优先级为1;Thread中设置的最大优先级为Thread.MAX_PRIORITY,最小优先级为Thread.MIN_PRIORITY。
-- setPriority():优先级越高的线程执行的概率越大。
4、多线程的数据安全
(1)使用实现接口Runnable的方法生成的同一个Thread对象,共用同一个线程体。
(2)每个线程都有名字,可以使用setName来设置名称
(3)代码段中的任意一句都可能切换。
5、同步线程的方法
(1)同步代码块
synchronized (this) { }
表示对this对象加锁。