java关于多线程的学习

多线程

一、程序-进程-线程
1、程序
计算机指令的集合,以文件形式存储在磁盘上,即指一段静态的代码,静态对象。
2、进程
是一个程序在其自身的地址空间的一次执行活动,是系统进行资源分配、调度和独立运行的基本单位。(它使用系统资源)
3、线程
进程可进一步细分为线程,是一个程序内部的一条执行路径。是操作系统能过运算调度的最小单位。
举个例子:
工厂—>程序 、、 产品—>进程 、、 工人—>线程

二、进程与线程的
一个程序至少有一个进程,一个进程至少有一个线程。
1、什么是多进程、多线程?
多进程就是允许多个任务同时进行。
多线程是允许多个程序分成不同的部分运行。
(提供协调机制:防止进程之间和线程之间发生冲突;允许程序之间和线程之间共享资源)
三、并发和并行
并发:一个处理器同时处理多个任务(一个人同时吃三个馒头)。
并行:多个处理器同时处理多个不同的任务(三个人同时吃三个馒头)。
在这里插入图片描述

进程的创建和启动

Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来实现。
Thread类的特性
➢每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体。
➢通过该Thread对象的start()方法来调用这个线程。
在这里插入图片描述

Thread类

构造方法
➢Thread():创建新的Thread对象
➢Thread(String threadname):创建线程并指定线程实例名➢Thread(Runnabletarget):指定创建线程的目标对象,它实现了Runnable接口中的run方法
➢Thread(Runnable target, String name):创建新的Thread对象

创建线程的两种方式

一、继承Thread类

  1. 定义子类继承Thread类。
  2. 子类中重写Thread类中的run方法。
  3. 创建Thread子类对象,即创建了线程对象。
  4. 调用线程对象start方法:启动线程,调用run方法。
    有关方法
    void start(): 启动线程,并执行对象的run()方法
    run(): 线程在被调度时执行的操作
    String getName(): 返回线程的名称
    void setName(String name):设置该线程名称
    static currentThread(): 返回当前线程
    static void yield():线程让步,暂停当前进程,执行机会让给优先级相同或者更高的进程
    join():加入另一个线程,原先的调用线程将被阻塞,直到join() 方法加入的join 线程执行完为止
    static void sleep(long millis):(指定时间:毫秒) :在指定时间内放弃cpu的控制,让其他线程有机会被执行,时间到后重新排队

二、实现Runnable接口

1)定义子类,实现Runnable接口。
2)子类中重写Runnable接口中的run方法。
3)通过Thread类含参构造器创建线程对象。
4)将Runnable接口的子类对象作为实际参数传递给Thread类的构造方法中。
5)调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法。

线程的生命周期

在这里插入图片描述

Synchronized方法

Java对于多线程的安全问题提供了专业的解决方式:同步机制
1.synchronized (对象){
// 需要被同步的代码;
}
2、synchronized还可以放在方法声明中,表示整个方法为同步方法。
public synchronized void show (String name){ …}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值