线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
(一)开启新线程
创建新线程的步骤:
(1)定义一个线程NewThread类继承Thread。
(2)在线程类NewThread类中重写run方法,申明线程需要完成的任务。
(3)创建NewThread线程类的对象代表一个新线程。
(4)调用线程的start方法启动线程。
(二)JAVA程序中多线程运行的原理
几个线程同时运行时,并发执行,执行结果是随机。
(三)创建多线程的方式
1.使用继承类的方式创建多线程
继承Thread类,重写run方法。
2.使用实现接口的方式创建多线程
步骤:
(1)定义一个线程任务类实现Runnable接口。
(2)重写run()方法。
(3)创建线程任务类对象,创建一个Thread线程对象包装线程任务对象。
(4)启动线程对象。
缺点:
编码相对复杂,不能得到线程执行的结果。
优点:
(1)线程任务对象只是实现了Runnable接口,可以继续继承其他类;
(2)可以继续实现其他接口。
(3)线程任务对象的本身的功能可以增强,
(4)非常适合做线程池。
(5)非常适合做共享资源的访问。
(四)线程安全问题
1.线程安全问题出现原因:
多个线程同时访问同一个共享资源
2.线程安全问题解决方法
(1):使用同步代码块解决线程安全问题
syncronized(同步锁){
访问共享资源的核心代码
}
(2)使用同步方法解决线程安全问题
加上修饰符syncronized
public void syncronized 方法名(){
方法具体实现
}
(五)线程状态
(六)线程控制
线程控制的方法
public static void sleep(long millis);
让线程暂停一段时间
Thread.yield();
当前线程礼让一下CPU资源
public static final int MIN_PRIORITY = 1;
public static final int NORM_PRIORITY = 5;
public static final int MAX_PRIORITY = 10;
线程的优先级可以设置,默认优先级是:5,可以设置1,5,10三个优先级, 优先级高的线程可以更多机会得到CPU。
Thread.join();
让CPU让出资源给新加入的线程。