多线程

多线程
进程和线程
进程:进程就是正在运行的程序,是系统进行资源分配和调用的独立单位。
     每一个进程都有它自己的内存空间和系统资源。
多进程:通俗上来讲就是可以一边打游戏,一边听音乐。Windows,Mac和Linux等都是多进程操作系统,能在同一个时间段内执行多个任务。对于单核计算机来讲,游戏进程和音乐进程并不是同时运行的,因为CPU在某个时间点上只能做一件事情,计算机是在游戏进程和音乐进程间做着频繁切换,且切换速度很快。
     多进程的作用不是提高执行速度,而是提高CPU的使用率。

线程:在一个进程内部又可以执行多个任务,而这每一个任务我们就可以看成是一个线程。是程序使用CPU的基本单位。所以,进程是拥有资源的基本单位,线程是CPU调度的基本单位。线程是依赖于进程存在的。
并发和并行
解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
解释三:并行是在一台处理器上“同时”处理多个任务,并发是在多台处理器上同时处理多个任务。如hadoop分布式集群。
所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。
并行:指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
并发:指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
获取和设置线程对象名称
Thread类的基本获取和设置方法:
	public final String getName() //获取线程名称
	public final void setName(String name)/ /设置线程名称
    也可以通过构造方法也可以给线程起名字
    public static Thread currentThread()//获取当前执行的线程
线程控制之休眠线程
线程休眠
    static void sleep ( long millis) 单位是毫秒
    在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
线程控制之加入线程
public final void join ()
    意思就是:
    等待该线程执行完毕了以后, 其他线程才能再次执行
    注意事项:
    在线程启动之后, 在调用方法
礼让线程与守护线程
礼让线程:
    public static void yield ():暂停当前正在执行的线程对象,并执行其他线程。
守护线程:
    public final void setDaemon(boolean on):将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。 该方法必须在启动线程前调用。
多线程程序实现的方式2
概述:
    创建线程的另一种方法是声明实现 Runnable 接口的类。
    该类然后实现 run 方法。然后可以分配该类的实例,
    在创建 Thread 时作为一个参数来传递并启动。
步骤:
    1.创建一个类实现Runnable 接口
    2.重写Runnable 接口种的run方法
    3.创建Runnable 接口接口的子类对象,并把这个对象,传递给Thread对象
    4.创建Thread对象。
多线程程序实现的方式3
概述:
    实现Callable接口。相较于实现Runnable接口的方式,方法可以有返回值,并且可以抛出异常。
	执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。
实现步骤:
    1.创建一个类实现Callable 接口 重写接口中的 call()方法
    2.创建一个FutureTask类将Callable接口的子类对象作为参数传进去
    3.创建Thread类, 将FutureTask对象作为参数传进去
    4.开启线程
同步代码块的锁问题
同步代码块可以解决线程安全问题
同步锁:可以是任意一个Java对象
格式:
	synchronized (同步锁){
   		 你有肯能出现问题的代码
    }
Lock锁的概述和使用
Lock锁的概述
	虽然我们可以理解同步代码块和同步方法的锁对象问题,
	但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,
	为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock
Lock和ReentrantLock
	void lock() 加锁 
	void unlock() 释放锁 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值