本文共 1485 字,大约阅读时间需要 4 分钟。
1.进程
进程是操作系统的基础,是程序的一次执行。进程是系统进行资源分配和调度的独立单位,一个进程由多个线程组成。
2.线程
线程是操作进行调度的最小单位,包含在进程中,线程是进程的子任务。一个进程运行则至少由一个线程正在运行。Java中线程创建由两种方式,一种是继承Thread类,一种是实现Runnable接口。
1.继承Thread接口
2.实现Runnable接口
实际上Thread内也实现了Runnable接口,且Thread也有接收Runnable对象的构造方法,可用Thread thread = new Thread(Runnable run)。 线程执行start()不代表启动的状态,仅代表线程处于可运行状态。Callable接口有call()方法,类似run(),但call()可以抛出异常且可以有返回值。
call()方法作为线程的执行体,用FutureTask类包装Callable对象。 具体如下:FutureTask task = new FutureTask((Callable )()->{int i = 0;return i;});new Thread(task,"callable创建的线程").start();
采用Runnable,Callable方式的优缺点
优点: 只是实现接口,可以继承其他类和接口 。 多个线程可以共享一个目标对象,适用于将多个相同线程处理同一资源的应用场景。 缺点:编码相对复杂,需用Thread.currentThread()获得当前线程 采用继承Thread的方式 优点:编程简单,可以使用this直接调用当前线程。 缺点:不能继承其他类 推荐使用Runnble接口实现线程。线程有五种状态: 创建,就绪,运行,阻塞,死亡
状态说明:线程拥有共享与非共享数据,如个人账户余额,购票。。
使用共享数据时,需注意线程安全问题。 如在抢票时,在某一时刻只允许一个线程修改剩余票数数量。转载地址:http://xfkai.baihongyu.com/