线程相关技术

线程

线程(英语: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让出资源给新加入的线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值