1、并发与并行

1.1 并发(交替)

两个或多个时间在同一个时间段内发生
在这里插入图片描述

1.2 并行(同时)

两个或多个时间在同一时刻发生(同时发生)

在这里插入图片描述

2、进程与线程

2.1 进程

进程: 进入到内存的程序

特点:

  1. 每个进程都有一个独立内存空间
  2. 一个应用程序可以同时运行多个进行
  3. 进程也是程序的一次执行过程,是系统运行的基本单位
  4. 系统运行一个程序即是一个进程从创建、运行、消亡的过程
    在这里插入图片描述
    在这里插入图片描述

2.2 线程

线程:是进程中的一个执行单元
特点:

  1. 一个程序运行后至少有一个进程
  2. 一个进程中可以包含多个线程

在这里插入图片描述

2.3 线程调度

  • 单核CPU执行方式为:在多个线程中高速切换,轮流执行多个线程,切换速度为(1/n毫秒)效率低
  • 多核CPU执行方式为:如4核心8线程,8个线程在多个任务之间坐高速切换,速度是单线程CPU的8倍(每个任务执行的几率都被提高了8倍)
=>分时调度

所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间

=>抢占式调度 (java采用的方式)

优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度

2.4 守护线程

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)
用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:

关于守护线程的文章可以参考这篇
Java中的守护线程:https://www.cnblogs.com/qq1290511257/p/10645106.html

3、main(主)线程

当Java虚拟机启动时,通常有一个非守护进程线程(通常调用某些指定类的名为main的方法)
Java虚拟机将继续执行线程,直到发生以下任一情况:

  • 已经调用了Runtime类的exit方法,并且安全管理器已经允许进行退出操作
  • 所有不是守护进程线程的线程都已经死亡,无论是从调用返回到run方法还是抛出超出run方法的run

3.1 main(主)线程

Java 使用 java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例

创建Person类

public class Person {private String name;public void run(){for (int i = 0; i < 10; i++) {System.out.println(name+"==>"+i);}}public Person() {}public Person(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

创建main线程类

/*
*   主线程:执行主(main)方法的线程
*   单线程程序:java程序中只有一个线程
*   执行从main方法开始,从上到下依次执行
*
*   ==================  main(主)线程   ==================
*   JVM执行main方法,main方法会进入到栈内存
*   JVM会找操作系统开辟一条main方法通向cpu的执行路径
*   cpu就会通过这个路径来执行main方法
*   这个路径有一个名字:main(主)线程
*
* */public class ThreadDemo1 {public static void main(String[] args) {Person zhangsan = new Person("zhangsan");zhangsan.run();Person lisi = new Person("lisi");lisi.run();}
}

图解:
在这里插入图片描述

3.2 主线程异常

Exception in thread "main"
在这里插入图片描述

线程创建的二个方式:

4、创建多线程方式一:Thread 类

java.lang.Thread
线程是程序中执行的线程。 Java虚拟机允许应用程序同时执行多个执行线程。

4.1 Thread 类实现多线程

① 创建一个Thread类的子类
// 方式一:继承 Thread 类 
public class ThreadDemo1 extends Thread{}
② 重写 run() 方法 ☆

在Thread类的子类中重写Thread类中的run方法,设置线程任务(开启线程要做的事情)

这里是线程的核心操作方法,一切线程的操作都放在这里

// run方法线程主体
public void run() {for (int i = 0; i < 200; i++) {System.out.println("子线程执行体--------"+i);}
}
③ 创建Thread类的子类对象
// 创建线程对象
Thread thread = new ThreadDemo1();
④ 调用Thread类中的方法start方法(开启新线程,间接执行run方法)

在这里插入图片描述

//调用 start()方法开启线程
// 执行 start方法 会自动调用 run方法
thread.start();

调用2次start() 直接报错 Exception in thread "main" java.lang.IllegalThreadStateException
在这里插入图片描述

⑤ 完整代码与解读

下面是简单版完整代码

package com.ctra.demo1;// 创建线程方式一:
//  继承 thread 类
//  重写 run()方法 --> 编写线程执行体
//  创建线程对象,调用start 开启线程
public class ThreadDemo1 extends Thread{@Overridepublic void run(){for (int i = 0; i < 20; i++) {System.out.println("执行子线程====="+ i);}}public static void main(String[] args) {// 创建线程对象Thread thread = new ThreadDemo1();//调用 start()方法开启线程// 执行 start方法 会自动调用 run方法thread.start();for (int i = 0; i < 200; i++) {System.out.println("执行主线程<<<<<"+i);}}
}

对于源码解读,关于java中线程随机执行的原因:
在这里插入图片描述

⑥ 多线程内存原理分析
public class MyThread extends Thread{@Overridepublic void run(){for (int i = 0; i < 20; i++) {System.out.println("执行子线程====="+ i);}}public static void main(String[] args) {MyThread thread = new MyThread();thread.start();for (int i = 0; i < 20; i++) {System.out.println("执行主线程<<<<<"+i);}}
} 

通过分析我们应该加深理解

  1. 区分理解:在main线程调用run方法和通过start方法间接调用run方法的区别
  2. start方法将开辟新的栈空间,实现多线程
  3. cpu就有多选择的权利,可以执行main方法,也可以执行俩个run方法
  4. 多线程好处:多个线程之间互不影响(在不同的栈空间)

在这里插入图片描述

4.2 获取线程名称

  1. 使用Thread类中的方法getName(),返回此线程的名称。
  2. 可以先获取到当前正在执行的线程,使用线程中的方法getName() 获取线程的名称
    static Thread currentThread() 返回对当前正在执行的线程对象的引用。
// 在 run 方法中
@Override
public void run() {// 获取线程名称,方式一String name = getName();System.out.println(name);// 获取线程名称,方式二Thread thread = Thread.currentThread();System.out.println(thread);String name = thread.getName();System.out.println(name);
}

推荐使用:Thread.currentThread().getName()

4.3 设置线程名称

  1. 使用Thread类中的方法setName(名字) setName(String name) 将此线程的名称更改为等于参数 name 。
  2. 创建一个带参的构造方法,参数传递线程的名称,调用父类的带参构造方法,把线程名称传递给父类,让父类(Thread)给子线程起一个名字 Thread(String name) 分配一个新的 Thread对象。
public static void main(String[] args) {// 创建Thread类的子类对象MyThread myThread = new MyThread();// 方式一:setName 线程名称myThread.setName("ctra");myThread.start();// 方式二:MyThread("ctra2") 构造函数 线程名称new MyThread("ctra2").start();
}

4.4 sleep 方法

public static void sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)
毫秒数结束之后,线程继续执行

/*
*   public static void sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)
*   毫秒数结束之后,线程继续执行
*
* */
public class SleepDemo {public static void main(String[] args) {for (int i = 0; i < 10; i++) {System.out.println(i);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}
}

这里注意sleep的异常处理
由于当前类没有抛出异常,所以使用try catch方式捕获异常

5、创建多线程方式二: Runnable 接口

java.lang.Runnable
Runnable接口应由任何类实现,其实例将由线程执行。 该类必须定义一个无参数的方法,称为run 。

实现步骤:

  1. 创建一个 Runnable 接口的实现类
  2. 在实现类中重写Runnable接口的run方法,设置线程任务
  3. 创建一个Runnable接口的实现类对象
  4. 创建一个Thread 类对象,构造方法中传递Runnable接口的实现类对象
  5. 调用Thread 类中的start方法,开启新的线程执行run()

Runnable 接口实现类

package com.ctra.RunnableDemo3;// 1.创建一个 Runnable 接口的实现类
public class RunnbaleImpl  implements Runnable{// 2.在实现类中重写Runnable接口的run方法,设置线程任务public void run() {for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName()+"-->"+i);}}
}

main主线程 类

package com.ctra.RunnableDemo3;public class DemoRunnable {public static void main(String[] args) {// 3.创建一个Runnable接口的实现类对象RunnbaleImpl runnbale = new RunnbaleImpl();// 4.创建一个Thread 类对象,构造方法中传递Runnable接口的实现类对象Thread thread = new Thread(runnbale);// 5.调用Thread 类中的start方法,开启新的线程执行run()thread.start();for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName()+"-->"+i);}}
}

6、对比:Thread 类 与 Runnable接口

6.1 实现方式:2种

  1. 继承 Thread 类
  2. 实现 Runnable 接口 (推荐 ☆)

6.2 实现Runnable接口创建多线程的好处

  • 单继承的局限性:一个类智能继承一个类,类继承了Thread类就不能继续继承其他的类
  • 解耦:实现Runnable接口,把设置线程任务和开启新线程进行了分离(实现中重写了run方法来设置线程任务,创建Thread类调用start方法开启新线程)
Thread 类 Runnable接口
子类继承Thread 类 具备多线程能力 实现接口Runnable接口 具备多线程能力
启动线程:子类对象.start() 启动线程:传入目标对象+Thread对象.start()
不建议使用:避免OOP单继承局限性 推荐使用:避免单继承局限性
解耦,灵活方便
方便用一个对象被多个线程使用

7、匿名内部类方式实现线程的创建

  • 匿名:没有名字
  • 内部类:卸载其他的类的内部
  • 使用匿名内部类的作用:简化代码
  • 匿名内部类的最终产物:子类/实现类对象,而这个类没有名字

格式:
new 父类/接口(){
   重写父类/接口中的方法
}

package com.ctra.innerClassThread;public class Demo {public static void main(String[] args) {// Thread 匿名内部类Thread thread = new Thread() {@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("Thread =>" + i);}}};thread.start();// Runnable 匿名内部类Runnable runnable = new Runnable() {public void run() {for (int i = 0; i < 10; i++) {System.out.println("Runnable =>" + i);}}};new Thread(runnable).start();// 最终简化版new Thread(new Runnable() {public void run() {for (int i = 0; i < 10; i++) {System.out.println("Thread - Runnable =>" + i);}}}) {}.start();}
}

8、线程不安全-示例

8.1 出现线程不全的原因

在这里插入图片描述

8.2 出现线程不全的实现

问题: 多个线程操作同一个资源的情况下,线程不安全

↓ Runnable 接口实现类

public class RunnableImpl implements Runnable {// 定义一个多个线程共享的票源private int tickets = 100;// 设置线程任务:卖票public void run() {while (true) {if (tickets > 0) {// 为了提升安全性出现的概率,让程序休眠try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "购买了第:" + tickets + "号 门票");tickets--;}}}
}

↓ 测试类,开启三个线程

/*
* 模拟卖票
*  创建三个线程,同时开启,对100张共享票进行销售
*
* */public class Test {public static void main(String[] args) {//创建Runnable接口的实现对象Runnable runnable = new RunnableImpl();//创建Thread类对象,构造方法中传递// 创建三个不同的线程 同时调用一个共享runnable实现类对象(对100张共享票进行销售)new Thread(runnable,"Kety").start();new Thread(runnable,"bili").start();new Thread(runnable,"cili").start();}
}
输出:
bili购买了第:100号 门票
Kety购买了第:100号 门票
cili购买了第:100号 门票
Kety购买了第:97号 门票
cili购买了第:97号 门票
bili购买了第:97号 门票
...
Kety购买了第:1号 门票
cili购买了第:0号 门票
bili购买了第:-1号 门票

视频链接:https://www.bilibili.com/video/BV1Sz4y197pj?p=11
这个是截图视频大佬的分析很给力,讲明白了sleep的真正含义,和多线程调用共享资源输出相同内容的原理
在这里插入图片描述

9、解决线程不安全问题

9.1 方式一: synchronized 同步代码块

synchronized(){
    可能会出现的线程安全问题的代码
}

注意:

  1. 通过代码块中的对象,可以使用任意的对象
  2. 必须保证多个线程使用的锁对象是一个
  3. 所对象的作用:把同步代码块锁住,只让一个线程在同步代码块中执行

① synchronized 同步代码块 代码实现

↓ 代码实现(在上面的 Runnable接口实现类中新增同步代码块):

public class RunnableImpl implements Runnable {// 定义一个多个线程共享的票源private int tickets = 100;// 创建一个锁对象  (新增)Object object=new Object();// 设置线程任务:卖票public void run() {// 使用死循环,让卖票的操作重复执行while (true) {// 同步代码块 (新增)synchronized (object){if (tickets > 0) {// 为了提升安全性出现的概率,让程序休眠try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}//有票,就卖System.out.println(Thread.currentThread().getName() + "购买了第:" + tickets + "号 门票");tickets--;}}}}
}

② 剖析 synchronized 同步代码块

同步技术的原理:
使用了一个锁对象,这个锁对象叫同步锁,也叫对象锁,也叫对象监视器

在这里插入图片描述

③ synchronized 同步代码块的优缺点

优点:
同步保证了只能由一个线程在同步中执行共享数据,保证了安全
缺点:
程序频繁的判断锁,获取锁,释放锁,程序的效率会降低
总结:
同步中的线程,没有执行完毕不会释放锁,同步外的线程没有锁进不去

9.2 方式二: synchronized 同步方法

同步方法:使用synchronize修饰的方法,叫做同步方法
格式:
public synchronized void method(){
    可能会出现的线程安全问题的代码
}

同步锁是谁?

  • 对于非static方法,同步锁就是this
  • 对于static方法,我们使用当前方法所在类的字节码对象(类名.class - 反射)

① synchronized 同步方法 代码实现

步骤:

  1. 把访问了共享数据的代码抽取出来,放到一个方法中
  2. 在方法上添加synchronize修饰符
package com.ctra.ThreadSynchronized;/**   实现同步的2个方法* 第一个:使用synchronize 代码块* 第二个:使用synchronize 同步方法** */
public class RunnableImpl implements Runnable {// 定义一个多个线程共享的票源private int tickets = 100;// 创建一个锁对象  (新增)Object object = new Object();// 设置线程任务:卖票public void run() {System.out.println("this:" + this);// 使用死循环,让卖票的操作重复执行while (true) {// 方式一:同步代码块 (新增)synchronized (object) {
//                saleTickets();saleTickets2();}}}/** 定义一个同步方法* 同步方法也会把方法内部的代码锁住* 只让一个线程执行* 同步方法的锁对象是谁?* 就是实现类对象 new RunnableImpl()* 也就是this* */public synchronized void saleTickets() {if (tickets > 0) {// 为了提升安全性出现的概率,让程序休眠try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}//有票,就卖System.out.println(Thread.currentThread().getName() + "购买了第:" + tickets + "号 门票");tickets--;}}// 验证同步方法的对象为thispublic void saleTickets2() {synchronized (this) {if (tickets > 0) {// 为了提升安全性出现的概率,让程序休眠try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}//有票,就卖System.out.println(Thread.currentThread().getName() + "购买了第:" + tickets + "号 门票");tickets--;}}}
}

② static synchronized 静态的同步方法

在这里插入图片描述
↓ 代码实现

 // 静态同步方法/** 静态的同步方法* 锁对象是谁?* 不能是this* this是创建对象之后产生的,静态方法优先于对象* 静态方法的锁对象是本类的class属性 --> class文件对象(反射)* */public static synchronized void saleTicketsStatic() {if (tickets > 0) {// 为了提升安全性出现的概率,让程序休眠try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}//有票,就卖System.out.println(Thread.currentThread().getName() + "购买了第:" + tickets + "号 门票");tickets--;}}// 验证静态同步方法的对象为 本类的class属性public static  void saleTicketsStatic2() {synchronized(Runnable.class){if (tickets > 0) {// 为了提升安全性出现的概率,让程序休眠try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}//有票,就卖System.out.println(Thread.currentThread().getName() + "购买了第:" + tickets + "号 门票");tickets--;}}}

9.3 方式三:Lock 锁

java.util.concurrent.locks.Lock 接口
Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。

常用方法:

  • void lock() 获取锁

    public void lock()获得锁。
    如果锁没有被另一个线程占用并且立即返回,则将锁定计数设置为1。
    如果当前线程已经保持锁定,则保持计数增加1,该方法立即返回。
    如果锁被另一个线程保持,则当前线程将被禁用以进行线程调度,并且在锁定已被获取之前处于休眠状态,此时锁定 保持计数被设置为1。

  • void unlock() 释放锁
    public void unlock()尝试释放此锁。
    如果当前线程是该锁的持有者,则保持计数递减。 如果保持计数现在为零,则锁定被释放。 如果当前线程不是该锁的持有者,则抛出IllegalMonitorStateException 。

常用类

  • java.util.concurrent.locks.ReentrantLock implement Lock 接口

使用步骤:

  1. 在成员位置创建一个ReentrantLock
  2. 在可能会出现安全问题的代码前调用Lock接口中的方法Lock获取锁
  3. 在可能会出现安全问题的代码后调用Lock接口中的方法unlock释放锁

↓ 代码实现:

package com.ctra.ThreadLock;import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class RunnableImpl implements Runnable {public static int tickets = 100;// 1、在成员位置创建一个ReentrantLockLock l =   new ReentrantLock();public void run() {while (true){// 2、在可能会出现安全问题的代码前调用Lock接口中的方法Lock获取锁l.lock();if(tickets>0){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"买到了第-->"+ tickets+"号 门票");tickets--;}// 3、在可能会出现安全问题的代码后调用Lock接口中的方法unlock释放锁l.unlock();}}
}

防止死锁

优化代码,将unlock方法放在 finally 中,防止死锁

package com.ctra.ThreadLock;import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class RunnableImpl2 implements Runnable {public static int tickets = 100;// 1、在成员位置创建一个ReentrantLockLock l =   new ReentrantLock();public void run() {while (true){// 2、在可能会出现安全问题的代码前调用Lock接口中的方法Lock获取锁l.lock();if(tickets>0){try {Thread.sleep(10);System.out.println(Thread.currentThread().getName()+"买到了第-->"+ tickets+"号 门票");tickets--;} catch (InterruptedException e) {e.printStackTrace();}finally {// 3、在可能会出现安全问题的代码后调用Lock接口中的方法unlock释放锁l.unlock();  //无论程序是否异常,都会释放锁}}}}
}

10、 线程的状态 6个

线程状态。线程可以处于以下状态之一:

  • NEW
    尚未启动的线程处于此状态。
  • RUNNABLE
    在Java虚拟机中执行的线程处于此状态。
  • BLOCKED
    被阻塞等待监视器锁定的线程处于此状态。
  • WAITING
    正在等待另一个线程执行特定动作的线程处于此状态。
  • TIMED_WAITING
    正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。
  • TERMINATED
    已退出的线程处于此状态。

一个线程可以在给定时间点处于一个状态。 这些状态是不反映任何操作系统线程状态的虚拟机状态。

在这里插入图片描述

11.1 等待唤醒: wait & notify

在这里插入图片描述
↓ 代码实现:

package com.ctra.WaitAndNotify;import sun.rmi.runtime.NewThreadAction;public class DemoWaitAndNotify {public static void main(String[] args) {//   创建锁对象 保证唯一final Object obj = new Object();// 消费者 (顾客)new Thread() {@Overridepublic void run() {// 保证等待和唤醒 (生产和消费)的线程只有一个个执行,需要使用同步技术synchronized (obj) {System.out.println("消费者:我要买东西!!!");// 调用wait方法,放弃cpu的执行,进入到waiting状态(无线等待try {// 使用锁对象调用waitobj.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("消费者:货已收到,感谢老板");}}}.start();// 生产者(老板)new Thread() {@Overridepublic void run() {try {Thread.sleep(4000);} catch (InterruptedException e) {e.printStackTrace();}// 保证 等待和唤醒的线程只能有一个执行,需要使用同步技术synchronized (obj) {System.out.println("生产者:接到订单,我要开始生产了!!!");// 做好包子后,调用notify方法,唤醒顾客吃包子obj.notify();}}}.start();}
}

↓ 循环版,等待与消费 代码实现:

package com.ctra.WaitAndNotify;import sun.rmi.runtime.NewThreadAction;import java.util.Random;public class DemoWaitAndNotify {public static void main(String[] args) {//   创建锁对象 保证唯一final Object obj = new Object();// 消费者 (顾客)new Thread() {@Overridepublic void run() {while (true) {// 保证等待和唤醒 (生产和消费)的线程只有一个个执行,需要使用同步技术synchronized (obj) {System.out.println("消费者"+":我要买东西!!!");// 调用wait方法,放弃cpu的执行,进入到waiting状态(无线等待try {// 使用锁对象调用waitobj.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("消费者:货已收到,感谢老板");System.out.println("----------------------------------");}}}}.start();// 生产者(老板)new Thread() {@Overridepublic void run() {while (true) {try {Thread.sleep(4000);} catch (InterruptedException e) {e.printStackTrace();}// 保证 等待和唤醒的线程只能有一个执行,需要使用同步技术synchronized (obj) {System.out.println("生产者:接到订单,我要开始生产了!!!");// 做好包子后,调用notify方法,唤醒顾客吃包子obj.notify();}}}}.start();}
}

10.2 计时等待 TimeWaiting: wait() & notifyAll

sleep 和 wait 的区别

  • 进入到sleep(long m)方法,在毫秒值结束后,线程进入到 Runnable/Blocked状态
  • 使用wait(long m)方法,wait方法如果在毫秒值结束后,还没有被notify唤醒,会自动苏醒,线程进入到 Runnable/Blocked状态

11、线程间通信

概念: 多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同
为什么要处理线程间通信:多个线程并发执行时,在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行,name多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据

11.1 等待唤醒(线程通信 wait & notify)

  • wait:线程不再活动,不再参与调度,进入wait set 中,因此不会浪费CPU资源,也不会去竞争锁了,这时的线程状态即是WAITING。他还要等着别的线程一个特别的动作,也就是“通知(notify)”在这个对象上的等待的线程从wait set中释放出来,重新进入到调度队列(ready queue)中
  • notify:选取所通知对象的wait set 中的一个线程释放;例如:餐馆有空位置后,等候就餐最旧的顾客先入座
  • notifyAll:释放所有统治对象的wait set 上的全部线程

哪怕只通知了一个等待的线程,被通知线程也不能立即恢复执行,因为它当初终端的地方是在同步块内,而此刻他已经不持有锁,所以它需要再次尝试去获取锁(很可能面临其他线程的竞争),成功后才能在当初调用wait方法之后的地方恢复执行
总结如下:

  • 如果能获取锁,县城就从WAITING状态编程RUNNABLE状态;
  • 否则,从wait set 出来,又进入entry set ,线程就从WAITING状态又变成了 BLOCKED状态

案例分析:生产者与消费者
在这里插入图片描述

12、线程池

线程池思想概述
在这里插入图片描述

线程池:就是一个容器–>就是一个集合(ArrayList,HashSet,LinkedList<Thread>,HashMap)

线程池:JDK1.5 之后提供的
java.util.concurrent.Executors:线程池的工厂类,用来生成线程池

Executors类中的静态方法:

  • static ExecutorService newFixedThreadPool(int nThreads) 创建一个可重用固定线程数的线程池
  • 参数 :nThreads - 池中的线程数
  • 返回值:ExecutorService接口,返回的是ExecutorService接口的实现类对象,哦们可以使用ExecutorService接口接收(面向接口编程)

java.util.concurrent.ExecutorService :线程池接口 用来从线程池中获取线程,调用start方法,执行线程任务

  • submit(Runnable task) 提交一个可运行的任务执行,并返回一个表示该任务的未来。
  • shutdown() 启动有序关闭,其中先前提交的任务将被执行,但不会接受任何新任务。

线程池的使用步骤:

  1. 使用线程池的工厂类Executors里边提供的静态方法 newFixedThreadPool 生产一个指定线程数量的线程池
  2. 创建一个类,实现Runnable接口,重写run方法,设置线程任务调用
  3. 调用ExecutorService 中的方法submit,传递线程任务(实现类),开启线程,执行run方法
  4. 调用ExecutorService 中的方法shutdown销毁线程池(部件一致性)

↓ 代码实现:

public class ThreadPoolDemo {public static void main(String[] args) {ExecutorService es = Executors.newFixedThreadPool(3);es.submit(new RunnableImpl());es.submit(new RunnableImpl());es.submit(new RunnableImpl());}
}
public class RunnableImpl implements Runnable {public void run() {System.out.println(Thread.currentThread().getName()+"创建了一个新的接口");}
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 企业微信和微信公众号获取开发者编号和开发者密码路径

    关注微信公众号获取tokenUrl的地址为 https://api.weixin.qq.com/cgi-bin/token 关注微信公众号获取ticket的地址为 https://api.weixin.qq.com/cgi-bin/ticket/getticket 不能获取手机号 方法太麻烦 /-+/-+/-+/-+/-+/-+/-+/-+/-+/-+ 企业微信获取tokenUrl的地址为 https://qya…...

    2024/5/1 0:11:29
  2. Node.Js+React.Js+Git的基本开发环境配置

    1、基本开发环境的配置 主要包括node.Js的基本安装、React的基本安装、GIT的安装以及git可视化工具sourceTree的基本安装。 (1)node.Js的安装 官网搜索node.Js,下载安装包,进行傻瓜式安装(点击下一步就可以)。(2)React的基本安装 首先创建一个项目文件夹, cd 到需要创…...

    2024/4/30 20:12:02
  3. Python——走马灯

    走马灯 def f():import times=人生苦短,我学Pythonc=0while True:print(s)time.sleep(0.3)#休眠0.3秒。每隔0.3秒,即300毫秒显示一行代码s=s[1:]+s[0]c+= 1if c==2*len(s):break f()输出结果 人生苦短,我学Python 生苦短,我学Python人 苦短,我学Python人生 短,我学Python…...

    2024/4/20 4:42:04
  4. 「Python 秘籍」在正则式中使用 Unicode

    关注RPA请访问网站: www.i-search.com.cn 学Python,用RPA,欢迎下载使用 www.i-search.com.cn/index.html?from=line1 问题 你正在使用正则表达式处理文本,但是关注的是 Unicode 字符处理。 解决方案 默认情况下 re 模块已经对一些 Unicode 字符类有了基本的支持。 比如, \d…...

    2024/4/16 17:02:23
  5. Android数据绑定dataBinding的使用方法

    想要使用Android数据绑定:dataBinding,大体分为6步:build.gradle中添加配置、编写bean数据类、编写Adapter适配器类、编写Adapter适配器的layout布局文件、编写java界面文件、编写java界面的layout布局文件。 本文以在Fragment中使用RecyclerView列表的界面来介绍。1.build.…...

    2024/4/30 21:09:47
  6. 荣耀X10 Max发布在即 屏幕优势显著

    前一阵就听说了荣耀X10 Max将在7月2日发布的消息,不知不觉中已经只剩不到一周的时间了,作为今年唯一的5G大屏手机,人们关注的无非是它的屏幕,以及各项配置。刚刚荣耀X10 Max又有了更多的爆料信息,下面就跟大家来聊一聊这款即将发布的5G大屏手机。荣耀X10 Max采用了一块7.0…...

    2024/5/1 0:01:53
  7. Django 接收并解析POST请求参数

    使用Django框架搭建一个简单的web服务,java程序去调用Django提供的接口: 1. Django接收GET请求并解析参数 # 直接使用request.GET.get就可以获取参数 request.GET.get(id,0)2. Django接收POST请求并解析参数 使用postman模拟POST请求,需要关闭csrftoken的验证:将settings.p…...

    2024/4/30 18:54:29
  8. 启动Altium Designer20时界面卡几分钟的处理办法

    开始启动Altium Designer20时界面卡在Explorer Starting EDMS Interface时处理办法首先解释下,AD20卡在这里是因为在连接AD的服务器,而使用破解版的话就有可能会卡在这个界面(也有人用破解版不会卡在这里)因为这是软件在启动时连接服务器导致的,所以咱们只需要把他连接网络…...

    2024/4/30 18:17:14
  9. nexus3.x Liunx私库安装教程 (亲测!)

    目录前言一、环境准备二、nexus环境配置三、了解nexus四、上传naxus五、使用nexus六、问题1、问题一后言 前言 书接上文?enn… 嘛~ ,上文:nexus 3.x下载 3.18.1(maven 私服) 上面是教如何下载nexus的 嘛,开始吧,有啥阔以聊的我后面再放吧(づ ̄ 3 ̄)づ一、环境准备 1、一台…...

    2024/4/16 17:02:18
  10. centos7 64位使用心得

    一、安装宝塔面板 1、安装宝塔面板,安装方法去官网查询 2、修改默认路径,面板设置 - 默认建站目录和默认备份目录修改为: /home /home/backup二、安装云锁 1、安装最新版、提示Install Complete(安装完成),下面是安装运行代码。 wget https://download.yunsuo.com.cn/v3/…...

    2024/4/27 1:54:43
  11. Django ORM select 查询操作

    基本操作# 获取所有数据,对应SQL:select * from User User.objects.all()# 匹配,对应SQL:select * from User where name = Uzi User.objects.filter(name=Uzi)# 不匹配,对应SQL:select * from User where name != Uzi User.objects.exclude(name=Uzi)# 获取单条数据(有…...

    2024/4/30 18:53:13
  12. RabbitMQ基础组件介绍

    RabbitMQ采用Erlang语言开发 概念生产者(producer):创建消息,发布到代理服务器(Message Broker)。 消费者(consumer):消费消息 代理服务器(Message Broker):接收和分发消息的应用,RabbitMQ Server就是消息代理服务器,其中包含概念很多,以RabbitMQ 为例:信道(c…...

    2024/4/30 17:52:27
  13. Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案

    Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案参考文章: (1)Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案 (2)http://www.cnblogs.com/jiangxinnju/p/4906457.html 备忘一下。...

    2024/4/8 19:24:19
  14. 利用break 标签跳出for select循环

    package mainimport ("fmt""time" )func main() {strChan := make(chan int, 1)n := 0// 生产者不停的生产,如果通道有数据,就会把消费者唤醒go func() {for {fmt.Println("loop")time.Sleep(time.Second)n++if n%5 > 2 {strChan <- n}if …...

    2024/4/30 23:03:23
  15. Linux内核的驱动阻塞机制

    什么叫阻塞,阻塞就是执行操作的时候,如果条件不满足则进程挂起,进入睡眠状态,知道等待的条件满足。 阻塞的实现机制,应用程序是无法实现阻塞的,进程阻塞是通过Linux内核的等待队列来实现的。如果像将一个进程阻塞,就将它放入等待队列中,运行条件不满足的时候就将等待队…...

    2024/4/20 5:39:15
  16. kafka java序列化时间日期按照统一格式以及使用gson来做序列化反序列化配置

    kafka java序列化时间日期按照统一格式以及使用gson来做序列化反序列化配置 直接上代码 public class GsonSerializer<T> implements Serializer<T> {public static final String CONFIG_VALUE_CLASS = "value.deserializer.class";public static final …...

    2024/4/30 23:27:01
  17. C#判断端口是否被占用

    public static bool PortInUse(int port){bool inUse = false;IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();//IP端口foreach (IPEndPoint endPoint in ipEndPoints){if (…...

    2024/4/30 22:49:29
  18. springboot aop 切到service层,不生效

    今天发现一个问题,使用aop切到service层方法上,idea会有切成功的标志,编译也不报错,但就是不生效。研究了下发现,是因为我切的方法被同一个service中的其他方法调用,这样的话就不生效了,暂不清楚原因,解决方法时切到调用它的方法上,这只是切点不生效的一种情况,希望能…...

    2024/4/16 17:02:53
  19. OpenGL和unity 3D

    OpenGL用于图像,unity 3D是游戏引擎,后者可能用到前者的算法。...

    2024/4/18 13:34:53
  20. Easyui网上书城需求分析

    Easyui网上书城分析背景/价值模块划分前台后台前台用户模块前台分类模块前台书籍模块前台购物车模块前台订单模块后台书籍模块后台权限模块后台订单模块数据库设计 背景/价值 对老板而言:方便管理,有助于书城的推广 对顾客而言:方便购买、查阅书籍 对图书的销售和采购提供了…...

    2024/4/16 17:02:28

最新文章

  1. 设计模式学习笔记 - 项目实战二:设计实现一个通用的接口幂等框架(实现)

    概述 上篇文章&#xff0c;我们讲解了幂等框架的设计思路。在正常情况下&#xff0c;幂等框架的处理流程是比较简单的。调用方生成幂等号&#xff0c;传递给实现方&#xff0c;实现方记录幂等号或者用幂等号判重。但是&#xff0c;幂等框架要处理的异常情况很多&#xff0c;这…...

    2024/5/1 2:19:58
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 2024.4.10作业

    #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } //显示时间 void Widget::timerEvent(QTimerEvent *e) { QT…...

    2024/4/27 8:45:52
  4. 利用Sentinel解决雪崩问题(一)

    1、解决雪崩问题的常见方式有四种: 超时处理:设定超时时间&#xff0c;请求超过一定时间没有响应就返回错误信息&#xff0c;不会无休止等待;舱壁模式:限定每个业务能使用的线程数&#xff0c;避免耗尽整个tomcat的资源&#xff0c;因此也叫线程隔离;熔断降级:由断路器统计业务…...

    2024/4/29 19:29:38
  5. qt事件机制学习笔记

    实现闹钟功能 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), speecher(new QTextToSpeech(this)) //给语音播报者实例化空间 {ui->setupUi(this); }Widget::~Widget() {delete …...

    2024/4/30 8:22:14
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57