当前位置:   article > 正文

java线程与进程_java 进程与线程

java 进程与线程

线程

1.进程与线程的概念

​ 进程是指在系统中正在运行的一个应用程序,线程是比进程更小的执行单位
​ 一个进程可以产生多个线程,多线程机制使程序运行效率变得更高

2.多线程的优缺点

多线程好处:解决了多部分代码同时运行的问题

多线程弊端: 线程太多,单个线程运行效率降低

​ 多线程可以实现并发操作,可以提高执行效率。

​ 影响单个线程执行的效率。

3.多线程实现方式两种方式

​ 多线程实现
​ 继承Thread类
​ 实现Runnable接口

继承Thread类

1.子类覆盖父类中的run方法,将线程运行的代码存放在run中。

2.建立子类对象的同时线程也被创建。

3.通过调用start方法开启线程。

继承Thread类,重写run()方法

start()–执行

一个线程类对象只能调用一次start()方法

实现Runnable接口

1.子类覆盖接口中的run方法。

2.通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数。

3.Thread类对象调用start方法开启线程。

重写run0方法,通过向Thr ead0方法传递Runmable对象参数来实现线程

线程中执行的代码写到run()方法中

启动线程,调用start()方法

4.线程五种状态

sleep方法需要指定睡眠时间,单位是毫秒。
线程的五种状态:创建, 就绪,运行,阻塞,终止

5.创建线程两种方式的区别

实现Runnable接口,方便实现资源共享

继承Thread类受单继承影响,不适合多个线程共享资源

线程操作方法

Thread类中的主要方法如下

方法描述
public static Thread currentThread()返回当前的线程
public final String getName()返回线程名称
public final void setPriority(int priority)设置线程优先级
public void start()开始执行线程
public static void sleep(long m)使用目前的线程休眠m秒 (释放执行权和不释放锁)
public final void yield()暂停目前的线程,运行其他 线程
public void run()执行线程

Java中线程的优先级

定义描述表示的常量
public static final int MIN_PRIORITY最低优先级1
public static final int NORM_PRIORITY中等优先级,线 程默认的优先级5
public static final int MAX_PRIORITY最高优先级10

线程礼让

​ 线程礼让即调用Thread.yield()方法暂停当前正在运行的线程,使其他线程先行运行

Object类对线程的支持

Object是所有类的祖先,包含以下几个对线程操作相关的方法

方法描述
public final void wait()线程等待
public final void wait(long timeout)线程等待,并指定等待时间,以毫秒为单位 (释放执行权和锁)
Public void notify()唤醒第一个等待的线程
Public void notifyAll()唤醒全部等待的线程

同步与锁死

1.同步

同步的特点

同步的前提:

​ 同步需要两个或者两个以上的线程。

​ 多个线程使用的是同一资源。

未满足这两个条件,不能称其为同步。

同步的弊端:

​ 当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。

线程同步

​ 同步是指在同一时间段内只能运行一个线程

​ 同步可以解决线程中的安全问题

​ 同步代码块

​ synchronized(同步对象){

​ 需要同步的代码;

​ }

​ 同步方法

​ synchronized 方法返回值 方法名称(参数列表){}

2.死锁

死锁:彼此占用对方所需要的资源

等待唤醒机制

生产者与消费者实例

​ 生产者生产一个产品后,消费者才能进行消费,消费完之后,生产者继续生产

与线程相关的主要方法

来源方法说明
start()新建的线程进入Runnable状态
run()线程进入Running 状态
sleep()线程睡眠指定的一段时间
getName()获取线程名称
Thread类currentThread()获取当前正在运行的线程对象
yield()线程让位
join()线程加入
getPriority() setPriority()设置/获取线程优先级
wait()等待,用于线程通信
Object类notify()通知,用于线程通信
notifyAll()通知所有线程,用于线程通信
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/800563
推荐阅读
相关标签
  

闽ICP备14008679号