您的位置 首页 java

Java基本语法之多线程

Java 基本语法之 多线程

一、什么是 线程

线程( Thread )是一个程序内部的一条执行路径。

二、多线程是什么?

多线程是指从软硬件上实现多条执行流程的技术。

三、线程创建

(一)继承Thread类

1. 定义一个子类MyThread继承线程类 java.lang .Thread,重写run()方法

2. 创建MyThread类的对象

3. 调用线程对象的start()方法启动线程(启动后还是执行run方法的)

(二)实现Runnable接口

1. 定义一个线程任务类MyRunnable实现Runnable接口,重写run()方法

2. 创建MyRunnable任务对象

3. 把MyRunnable任务对象交给Thread处理。

4. 调用线程对象的start()方法启动线程

四、常用api

Java基本语法之多线程

五、解决线程安全问题

(一)同步代码块

作用:把出现线程安全问题的核心代码给上锁。

原理:每次只能一个线程进入,执行完毕后自动解锁,其他线程才可以进来执行。

例子:

synchronized (同步锁对象) {
操作共享资源的代码(核心代码)
}

锁对象要求:锁对象只要对于当前同时执行的线程来说是同一个对象即可。

锁对象建议:对于实例方法建议使用this作为锁对象。对于 静态方法 建议使用 字节码 (类名.class)对象作为锁对象。

(二)同步方法

作用:把出现线程安全问题的核心方法给上锁。

原理:每次只能一个线程进入,执行完毕以后自动解锁,其他线程才可以进来执行。

例子:

修饰符 synchronized 返回值类型 方法名称(形参列表) {
操作共享资源的代码
}

(三)Lock锁

为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock,更加灵活、方便。

Lock 是接口不能直接实例化,这里采用它的实现类ReentrantLock来构建Lock锁对象。

六、 线程池

线程池就是一个可以复用线程的技术。如果用户每发起一个请求,后台就创建一个新线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的,这样会严重影响系统的性能。

(一)使用

JDK 5.0起提供了代表线程池的接口:ExecutorService。

方式一:使用ExecutorService的实现类ThreadPoolExecutor自创建一个线程池对象

方式二:使用Executors(线程池的工具类)调用方法返回不同特点的线程池对象

文章来源:智云一二三科技

文章标题:Java基本语法之多线程

文章地址:https://www.zhihuclub.com/200394.shtml

关于作者: 智云科技

热门文章

网站地图