多线程基础(1)
来源:互联网 发布:阿里hr 知乎 编辑:程序博客网 时间:2024/06/05 02:50
一、理解多线程
概念:
(1)进程
正在运行的程序,是系统进行资源分配和调度的独立单位,每一个进程都有自己的内存空间和系统资源。
多进程:
同一时间段可以运行多个应用程序任务,从而提高CPU的使用率。
注意:单CPU在同一时间点上只能做一件事情,所以多进程的意义在于使得CPU在多个进程当中高速切换,以达到多个程序好像同时进行的效果。
(2)线程
在一个进程内可以执行多个任务,每一个任务就可以看做是一个线程。
线程是程序的执行单元,也就是执行路径,是程序使用CPU的最基本的单位。
多线程:程序有多条执行路径。
多线程的意义在于:可以提高应用程序的使用率
原因:程序的执行实质上是在争抢CPU的资源,当其中一个进程如果执行路径(线程)比较多,那么就会有更高的几率抢占到CPU的执行权。
二、创建多线程
创建多线程有三种方法:
1.继承Thread类
步骤:
a.自定义MyThread类继承Thread类
b.MyThread类重写run()方法
c.创建线程对象
d.启动线程
class MyThread extends Thread{ @Override public void run(){ //需要被线程执行的代码 }}class Test{ public static void main(String args[]){ Thread t1=new Thread(); Thread t2=new Thread(); t1.start(); t2.start(); }}
注意:
1.为什么要重写run()方法?
并不是所有的方法都要执行,所以java提供了run()方法用来包含所有需要被线程执行的代码块。
2.start()和run()方法的区别
run()方法–用来包含所有需要被线程执行的代码块,但其本质只是一个普通方法。
start()方法–首先启动线程,然后再由jvm去调用该线程的run()方法,也就是线程需要执行的代码块。
2.实现Runnable接口(Thread类源码也实现了Runnable接口)
步骤:
a.自定义MyRunnable类实现Runnable接口
b.MyRunnable类重写run()方法
c.创建MyRunnable类对象
d.调用Thread类带参构造并将创建好的 MyRunnable对象作为参数传递
e.启动线程
class MyRunnable implements Runnable{ @Override public void run(){ //需要被线程执行的代码块 }}class Test{ public static void main(String args[]){ MyRunnable r=new MyRunnable(); Thread t=new Thread(r); t.start(); }}
3.实现Callable
三、线程控制
1.线程控制–线程休眠:
public static void sleep(long millis)throws InterruptedExveption
在指定毫秒内让当前正在执行的线程暂停执行,此操作收到系统计时器和调度程序精确度和准确性的影响注意:sleep()和wait()方法的区别
2.线程控制–加入线程:
public final void join()
-- 等待该线程终止,也就是说只有这个线程执行完毕,其他线程才可以执行
3.线程控制–礼让线程:
public static void yield()
-- 暂停当前正在执行的线程对象,并执行其他线程 让多个线程的执行更和谐,但是不能靠它保证一人一次
4.线程控制–守护线程:
public final void setDaemon(boolean on)
-- 将该线程标记为守护线程或用户线程,当正在运行的线程都是守护线程时,java虚拟机退出。 所以该方法必须在启动线程前调用 该方法首先调用该线程的checkAccess方法 被守护的线程结束,守护线程就没有继续执行的必要了,所以会在一段时间后会结束
5.线程控制–中断线程
public final void stop() //让线程停止,已经过时,但还可以使用 public void interrupt() //中断线程,在此打一个中断的标记,将鲜橙状态终止让其抛出异常。
- 多线程基础(1)
- java多线程(1):基础
- java多线程(1)---基础
- java多线程基础(1)
- 多线程(一)多线程基础、多线程状态
- windows多线程基础(1):多进程 or 多线程 ?
- java多线程技术学习(1)--java多线程基础
- Java多线程干货系列(1):Java多线程基础
- Linux多线程-1-多线程基础介绍(初稿)
- java基础整理十一(多线程1)
- Java多线程基础(1)-基础知识
- iOS 学习笔记 --- 多线程基础(1)
- Java基础 之 多线程(1)
- Java多线程(1)——基础
- 多线程编程1 基础
- java多线程基础1
- 多线程1(java基础)
- 多线程(1):基础
- unity3d iPhone X 适屏代码 屏幕适应方案
- qq点赞BUG
- 枚举类型
- XML的DTD,XSD
- 欢迎使用CSDN-markdown编辑器
- 多线程基础(1)
- asp页面后台页面跳转实例
- 车载canBUS开发:java各基本数据类型的字节位运算
- Maven学习 (四) 使用Nexus搭建Maven私服 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找
- 打造行业增长新动力 服务机器人市场需求强劲
- Ubuntu16.04下安装OpenCV3.2.0(虚拟机)
- 写接口让别人用
- 深度学习笔记1-2
- 485. Max Consecutive Ones