多线程的简介及方法
来源:互联网 发布:上证综合指数季度数据 编辑:程序博客网 时间:2024/04/26 06:23
多线程
一、线程与进程
进程:进程是一个程序执行的过程,其本质是系统对程序的资源分配和调度的独立单位。
线程:即程序中执行的线程。进程中可以有多个线程,且一个程序中所有的线程共享其进程的所有资源。
二、多线程
多线程的含义:即一个程序包含多个线程,且并发执行。
多线程的优先级:每个线程都有优先级,优先级较高的线程优于优先级较低的线程执行。
2.1 为什么要使用多线程:
1. 使用多线程的程序可以同时执行多个线程,满足用户同一时间的不同需求。
2. 提高CPU的利用率。
2.2 多线程的劣势:
当程序访问量过大,即线程数过多时:
1. 线程数会占用内存,对内存造成一定压力。
2. 由于线程数之间共享资源,线程与线程有可能会相互造成影响。
3. 线程过多导致的控制不易,同时易产生BUG。
2.3 主线程
主线程是指JAVA文件启动时立即启动一个线程调用的main方法。、
特殊点:
1. 产生其它子线程的线程。
2. 通常在最后关闭。
三、多线程的实现
多线程有两种主要的方法来实现,即继承Thread类与实现Runnable接口。
3.1 Thread类
3.1.1 构造函数
8种构造函数,其中常用构造函数2种:
Thread(String name);
Thread(Tunnable target,String name);
3.1.2 常用方法
start()
让线程处于可允许状态
setPriorty(int newPriority)
设置优先级(1-10),默认为5
Join()
等待线程终止(抢占时间片)
yield()
线程礼让(静态方法),同优先级或更高
interrupt()
终止线程
isAlive()
是否处于活动状态
sleep(long millis)
休眠(静态方法)
sleep(long millis,int nanos)
注:线程阻塞,系统在此期间不启用
3.1.3 继承Thread 类
//定义
public class TestThread extends Thread{
public void run(){
System.out.println("这是在继承了Thread类的Test类中的方法");
}
}
//调用
public static void main(String[] args) {
TestThread t = new TestThread ();
t.run();
}
3.2 Runnable接口
3.2.1 Runnable接口的实例由线程执行,且需要重写run方法。
3.2.2 run() :当实现接口的对象Runnable被用来创建一个线程,启动线程使对象的run在独立执行的线程中调用的方法。
3.2.3 继承runnable接口并实现多线程
//定义
public class TestThread implements Runnable{
public void run(){
System.out.println("这是在实现了Runnable接口的Test类中的方法");
}
}
//调用
public static void main(String[] args) {
TestThread t = new TestThread (); //创建对象
Thread th = new Thread(t); //创建Thread对象,并传入继承了接口的类TestThread的对象
th.start(); //开启线程
}
3.3 两种方法的区别
3.3.1 方法2有利于程序的扩展,避免了JAVA单继承的局限性。
3.3.2 共享资源时,方法1无法实现,方法2可以。
四、关键字synchronized()
同步锁,锁定一个方法或者执行语句,其只能同时由一个线程执行,此线程执行同步锁锁定的方法或者语句期间,其它线程无法执行此方法或者语句。
- 多线程的简介及方法
- 第13章 多线程 多线程的简介及实现
- 无处不在的数据及处理方法简介
- 多线程的常用方法及GCD
- iOS多线程编程的定义及方法
- 多线程的同步方法及实现
- java多线程的创建及常用方法
- java多线程常用方法简介
- C#的多线程简介
- C#的多线程简介
- Java多线程总结(一):多线程简介及线程的创建
- Microsoft.XMLHttp的属性和方法的简介及使用
- Microsoft.XMLHttp的属性和方法的简介及使用
- Microsoft.XMLHttp 的属性和方法的简介及使用
- 三种多线程简介及使用方法
- #iOS多线程编程及GCD简介
- 进程、线程及多进程多线程简介
- java多线程简介及线程创建方式
- 论文理解:DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations
- VC++ Day01
- django中url的基本含义、配置与视图的关系
- oracle自增长主键(润乾报表)
- Android 事件处理
- 多线程的简介及方法
- 百度地图---dlopen failed: "/data/data/com.zoommax.car/files/libs/libBaiduMapSDK_base_v4_2_1.so" is 32-bi
- 实体忘记close就无法选择
- MySQL数据库导入BIN格式定长文件
- TCP服务器编程步骤
- 洛谷P1514 引水入城(深搜,贪心)
- Web开发之用canvas2image.js将canvas保存为图片(实现页面截图下载功能)
- 学习资源
- 数据源不定时间段后连接中断(解决方法:连接关闭后设置自启动,重新自动连接;Jboss异常:SQL Error 17002和SQL Error 17008