线程

主线程调用start()字线程执行run()方法

多条执行路径,主线程和子线程并行交替执行

一个进程可以有多个线程,如游戏中的图像声音等

程序:指令和数据的有序集合,本身没有任何运行的含义,是一个静态概念

进程:执行程序的一次执行过程,动态概念。是系统资源分配的单位。

一个进程中包含若干个线程,且至少有一个线程,线程是cpu调度和执行的单位

很多线程是模拟出来的,真正的多线程指有多个cpu,即多核。
代码

线程

继承Thread类

public class Thread
extends Object
implements Runnable
自定义线程类继承Thread类,重写Run()方法编写线程执行体,创建线程对象调用start()方法

package com.company.demo01;
// 线程开启不一定立即执行,由cpu调度执行
// 创建线程方式一:继承Thread类,重新Run()方法,调用Start开启线程
public class Thread01 extends Thread {public void run() {//run 方法线程体for (int i = 0; i < 30; i++) {System.out.println("test01" + i);}}public static void main(String[] args) {// 主线程//调用start()方法开启线程Thread01 thread01 = new Thread01();//thread01.start();//交替执行//thread01.run();先执行for (int i = 0; i < 30; i++) {System.out.println("test02" + i);}}
}

网图下载

1.在src下新建lib包导入io jar包右键选择 Add as library 导入资源中
package com.company.demo01;import org.apache.commons.io.FileUtils;import javax.print.DocFlavor;
import java.io.File;
import java.io.IOException;
import java.net.URL;//实现多线程同步下载图片
public class Thread02 extends Thread{private String url;//网络图片地址private String name;//保存的文件名public Thread02(String url, String name){this.url=url;this.name=name;}// 下载图片的线程执行体@Overridepublic void run() {WebDownLoader webDownLoader=new WebDownLoader();webDownLoader.downloader(url,name);System.out.println("下载文件名"+name);}public static void main(String[] args) {Thread02 thread01 = new Thread02("https://img-blog.csdnimg.cn/2020041414382368.png","1.png");Thread02 thread02 = new Thread02("https://img-blog.csdnimg.cn/20200414144400444.png","2.png");Thread02 thread03 = new Thread02("https://img-blog.csdnimg.cn/20200414144828652.png","3.png");//同时下载 交替下载,不按照顺序thread01.start();thread02.start();thread03.start();}
}// 下载器
class WebDownLoader {//下载方法public void downloader(String url, String name) {try {//网页上的地址变成文件FileUtils.copyURLToFile(new URL(url), new File(name));} catch (IOException e) {e.printStackTrace();System.out.println("IO异常downloader方法出现问题");}}
}

实现Runnable接口

定义MyRunnable接口,实现run()方法编写线程执行体,创建线程对象调用start()方法启动线程,由于java单继承的局限性 推荐使用Runnable对象。
package com.company.demo01;
//创建线程方式2:实现Runnable接口重写run()方法,执行线程需要接入Runnable接口实现类,调用start方法
public class Thread03 implements Runnable {public void run() {//run 方法线程体for (int i = 0; i < 30; i++) {System.out.println("t1" + i);}}public static void main(String[] args) {// 主线程//创建Runnable接口的实现类对象Thread03 thread03 = new Thread03();//创建线程对象,通过线程对象开启线程
//        Thread thread = new Thread(Thread03);
//        thread.start();//交替执行new Thread(thread03).start();for (int i = 0; i < 30; i++) {System.out.println("t2" + i);}}
}
package com.company.demo01;
import org.apache.commons.io.FileUtils;
import javax.print.DocFlavor;
import java.io.File;
import java.io.IOException;
import java.net.URL;//实现多线程同步下载图片
public class Thread04 implements Runnable{private String url;//网络图片地址private String name;//保存的文件名public Thread04(String url, String name){this.url=url;this.name=name;}// 下载图片的线程执行体@Overridepublic void run() {WebDownLoader02 webDownLoader02=new WebDownLoader02();webDownLoader02.downloader(url,name);System.out.println("下载文件名"+name);}public static void main(String[] args) {Thread04 thread01 = new Thread04("https://img-blog.csdnimg.cn/2020041414382368.png","1.png");Thread04 thread02 = new Thread04("https://img-blog.csdnimg.cn/20200414144400444.png","2.png");Thread04 thread03 = new Thread04("https://img-blog.csdnimg.cn/20200414144828652.png","3.png");//同时下载 交替下载,不按照顺序new Thread(thread01).start();new Thread(thread02).start();new Thread(thread03).start();}
}// 下载器
class WebDownLoader02 {//下载方法public void downloader(String url, String name) {try {//网页上的地址变成文件FileUtils.copyURLToFile(new URL(url), new File(name));} catch (IOException e) {e.printStackTrace();System.out.println("IO异常downloader方法出现问题");}}
}

龟兔赛跑

package com.company.demo01;
//模仿龟兔赛跑
public class Race implements Runnable {//胜利者private static String winner;@Overridepublic void run() {for (int i = 0; i <= 100; i++) {//模拟兔子休息if (Thread.currentThread().getName().equals("兔子")){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}}//判断比赛是否结束Boolean flag=gameOver(i);//如果比赛结束,就停止程序if (flag ) {break;}System.out.println(Thread.currentThread().getName() + "--跑了" + i + "步");}}// 判断是否完成比赛private boolean gameOver(int steps) {// 判断是否有胜利者if (winner != null) {return true;}{if (steps >= 100) {winner=Thread.currentThread().getName();System.out.println("winner is"+winner);return true;}}return  false;}public static void main(String[] args) {Race race= new Race();new Thread(race,"兔子").start();new Thread(race,"乌龟").start();}
}

实现Callable接口


1.实现Callable接口,需要返回值类型。
2.重写call方法,需要抛出异常
3.创建目标对象
4.创建执行服务:ExecutorService ser=Executors.newFixedThreadPool(1);
5.提交执行:Future<Boolean>result1=ser.submit(t1);
6.获取结果:boolean r1=result.get()
7.关闭服务:ser.shutdownNow();
package com.company.demo01;
import org.apache.commons.io.FileUtils;
import sun.tools.tree.AddExpression;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.*;//创建线程方式三:实现Callable方式
public class TestCallable implements Callable<Boolean > {private String url;//网络图片地址private String name;//保存的文件名public TestCallable(String url, String name){this.url=url;this.name=name;}// 下载图片的线程执行体@Overridepublic Boolean call() {WebDownLoader2 webDownLoader2=new WebDownLoader2();webDownLoader2.downloader(url,name);System.out.println("下载文件名"+name);return true;}public static void main(String[] args) throws ExecutionException, InterruptedException {TestCallable T01 = new TestCallable("https://img-blog.csdnimg.cn/2020041414382368.png","1.png");TestCallable T02 = new TestCallable("https://img-blog.csdnimg.cn/20200414144400444.png","2.png");TestCallable T03 = new TestCallable("https://img-blog.csdnimg.cn/20200414144828652.png","3.png");//创建执行服务:ExecutorService ser= Executors.newFixedThreadPool(3);//提交执行Future<Boolean> result1=ser.submit(T01);Future<Boolean> result2=ser.submit(T02);Future<Boolean> result3=ser.submit(T03);//获取结果:boolean r1=result1.get();boolean r2=result2.get();boolean r3=result3.get();//关闭服务ser.shutdownNow();}
}// 下载器
class WebDownLoader2 {//下载方法public void downloader(String url, String name) {try {//网页上的地址变成文件FileUtils.copyURLToFile(new URL(url), new File(name));} catch (IOException e) {e.printStackTrace();System.out.println("IO异常downloader方法出现问题");}}}

静态代理模式

package com.company.demo02;
//代理模式
/*
* 1.真实对象和代理对象都要实现同一个接口
* 2.代理对象代理真实对象
* 3.代理对象扩展真实对象功能
我是真实的喜欢是代理的
* */
public class StaticProxy {public static void main(String[] args) {like l1= new like(new me());l1.One();//        me m1=new me();
//        new Thread(()-> System.out.println("test")).start();
//        new like(new me()).One();}}interface Fill {void One();
}//真是角色
class me implements Fill {public void One() {System.out.println("one");}}//代理角色
class like implements Fill {//代理对象代理真实对象private Fill target;public like(Fill target) {this.target = target;}public void One() {before();this.target.One();//真实对象after();}private  void after(){System.out.println("之后");}private  void before(){System.out.println("开始之前");}
}

Lamda表达式

1.希腊字母第十一位 ”入“
2.避免匿名内部类定义过多
3.实质属于函数式编程的概念
a-> System.out.println("landa"+a);
new Thread(()->System.out.println("lanmda")).start();
1.函数式接口的定义:任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
2.对于函数式接口可以通过lamda表达式来创建该接口
package com.company.demo02;/*** 推导lamda表达式*/
public class TestLamda01 {//3.静态内部类static class Olike2 implements Ilike {public void lamda() {System.out.println("two lamda");}}public static void main(String[] args) {Ilike ilike = new Olike();ilike.lamda();ilike = new Olike2();ilike.lamda();//4.局部内部类class Olike3 implements Ilike {public void lamda() {System.out.println("three lamda");}}ilike = new Olike3();ilike.lamda();//5.匿名内部类,没有类的名称必须借助接口或者父类ilike = new Ilike(){public void lamda(){System.out.println("four lamda");}}; ilike.lamda();//6.lamda简化ilike=()->{System.out.println("five lamda");};ilike.lamda();}
}//1.定义一个函数式接口
interface Ilike {void lamda();
}//2.实现类
class Olike implements Ilike {@Overridepublic void lamda() {System.out.println("one lamda");}
}

package com.company.demo02;
//lamda表达式只能有一行代码简化,多行用代码块 函数式接口专用
public class TestLamda02 {public static void main(String[] args) {
//        Ilove ilove=(int a)->{
//            System.out.println(" lamda"+a);
//
//        };
//        ilove.love(2);
//        //1.简化去掉参数类型 去掉完 a,b,c...但必须加上括号  没有类的名称必须借助接口或者父类
//         ilove=( a)->{
//            System.out.println(" lamda"+a);
//
//        };
//        ilove.love(3);
//        //2.去掉括号
//        ilove=a -> {
//            System.out.println(" lamda"+a);
//
//        }; ilove.love(4);
//        //3.去掉花括号
//        ilove=a -> System.out.println(" lamda"+a); ilove.love(5);Ilove  ilove=a -> System.out.println(" lamda"+a); ilove.love(6);}
}
interface  Ilove{void love(int a);
}

线程停止

1.使用标志位进行终止变量当 flag=false,则终止线程运行
package com.company.demo03;
//停止线程
/*
1.线程正常停止-->利用次数,不建议死循环
2.使用标志位
3.不使用stop或者destroy过时的方法*/
public class TestStop implements Runnable {//1.设置一个标志位private boolean flag=true;@Overridepublic void run() {int i=0;while (flag){System.out.println("test"+i++);}}//设置一个公开的方法停止线程,转换标志位public void stop(){this.flag=false;}public static void main(String[] args) {TestStop testStop=new TestStop();new Thread(testStop).start();for (int i = 0; i < 1000; i++) {System.out.println("MAIN"+i);if (i==900) {//调用stop方法切换标志位,让线程停止testStop.stop();System.out.println("线程停止");}}}
}

线程休眠—sleep

1.sleep(时间)指定当前线程阻塞的毫秒数
2.sleep存在异常InterruptedException
3.sleep时间到达后线程进入就绪状态
4.sleep可以模拟网络延时,倒计时等
5.每一个对象都有锁,sleep不会释放锁

package com.company.demo03;import com.company.demo01.Thread05;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;//模拟网络延迟 放大问题发生性
//模拟倒计时
public class TestSleep {public static void main(String[] args) {//打印当前系统时间Date startTime=new Date(System.currentTimeMillis());while (true){try {Thread.sleep(1000);System.out.println(new SimpleDateFormat("HH:mm:ss").format(startTime));startTime=new Date(System.currentTimeMillis());}catch (InterruptedException e){e.printStackTrace();}}//        try {
//            tenDown();
//        }catch (InterruptedException e){
//            e.printStackTrace();
//        }}public static void tenDown() throws InterruptedException {int num=10;while (true){Thread.sleep(1000);System.out.println("num"+num--);if (num <=0) {break;}}}
}

线程礼让—yield

1.礼让线程,让当前正在执行的线程暂停,但不阻塞
2.将线程从运行状态转为就绪状态
3.让cpu重新调度,礼让不一定成功
package com.company.demo03;
//测试礼让 礼让不一定成功
public class TestYield {public static void main(String[] args) {MyYield myYield = new MyYield();new Thread(myYield,"a").start();new Thread(myYield,"b").start();}}class MyYield implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"线程开始");Thread.yield();//礼让System.out.println(Thread.currentThread().getName()+"线程停止");}
}

线程强制执行_join

1.join 合并线程,待线程执行完毕后,再执行其他线程,其他线程阻塞
2.插队
package com.company.demo03;
//测试join方法
public class TestJoin implements  Runnable {@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println("线程VIP"+i);}}public static void main(String[] args) throws InterruptedException {//启动线程Thread thread= new Thread(new TestJoin());thread.start();//主线程for (int i = 0; i < 500; i++) {if (i == 200) {thread.join();//插队}System.out.println("main"+i);}}
}

观测线程状态

线程状态。 线程可以处于以下状态之一:
NEW 
尚未启动的线程处于此状态。
RUNNABLE 
在Java虚拟机中执行的线程处于此状态。
BLOCKED 
被阻塞等待监视器锁定的线程处于此状态。
WAITING 
正在等待另一个线程执行特定动作的线程处于此状态。
TIMED_WAITING 
正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。
TERMINATED 
已退出的线程处于此状态。
一个线程可以在给定时间点处于一个状态。 这些状态是不反映任何操作系统线程状态的虚拟机状态。

线程状态

package com.company.demo03;import com.sun.javafx.scene.control.skin.TableHeaderRow;
//进入死亡不可重新启动
public class TestState {public static void main(String[] args) throws InterruptedException {Thread thread=new Thread(()->{for (int i = 0; i < 5; i++) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("///");});//观察状态Thread.State state = thread.getState();System.out.println(state);//new//观察启动thread.start();state =thread.getState();System.out.println(state);//runwhile (state !=Thread.State.TERMINATED){// 只要线程不终止 就一直输出状态Thread.sleep(100);state=thread.getState();//更新线程状态System.out.println(state);}}}

线程的优先级

1.java 提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度那个线程来执行
2.线程的优先级用数字1~10来表示
Thread.MIN_PRIORTY=1;
Thread.NORM_PRIORTY=5;
Thread.MAX_PRIORTY=10;
3.使用 getPriority() setPriority(int xxx)来改变或获取优先级
4.主要看cpu优先级的设定建议在start()调度前

package com.company.demo03;
//测试线程优先级
public class TestPriority {public static void main(String[] args) {//主线程默认优先级System.out.println(Thread.currentThread().getName()+"--"+Thread.currentThread().getPriority());MyPriority myPriority=new MyPriority();Thread t1=new Thread(myPriority);Thread t2=new Thread(myPriority);Thread t3=new Thread(myPriority);Thread t4=new Thread(myPriority);Thread t5=new Thread(myPriority);//先设置优先级 再启动t1.start();t2.setPriority(1);t2.start();t3.setPriority(4);t3.start();t4.setPriority(Thread.MAX_PRIORITY);t4.start();t5.setPriority(8);t5.start();}
}class MyPriority implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"--"+Thread.currentThread().getPriority());}
}

守护线程

1.线程分为用户线程和守护线程(daemon)
2.虚拟机必须确保用户线程执行完毕
3.虚拟机不用等待守护线程执行完毕
4.如,后台纪录操作,监控内存,垃圾回收等
package com.company.demo03;
//测试守护线程public class TestDaemon {public static void main(String[] args) {Country country = new Country();Me me = new Me();Thread thread = new Thread(country);thread.setDaemon(true);//默认false表示用户线程 正常的线程都是用户线程thread.start();//守护线程启动new Thread(me).start();//用户线程启动}
}//国家
class Country implements  Runnable{@Overridepublic void run() {while (true){System.out.println("守护每一天");}}
}
//我
class Me implements Runnable{@Overridepublic void run() {for (int i = 0; i < 36500; i++) {System.out.println("每天被守护");}System.out.println("谢谢");}
}

线程的同步机制

1.多个线程操作同一个资源
2.并发:同一个对象被多个线程同时操作
3.线程同步是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成对列,等待前面线程使用完毕下一个线程再使用。
4.锁:每个对象都有一把锁
5.线程同步形成条件:对列+锁  
6.锁机制:synchronized,当一个线程获得对象的排它锁,独占资源,其他线程必须等待,使用后释放锁即可。

三大不安全案例


package com.company.syn;
//不安全买票,买到负票
public class UnsafeBuyTicket {public static void main(String[] args) {BuyTicket buyTicket = new BuyTicket();new Thread(buyTicket,"a").start();new Thread(buyTicket,"b").start();new Thread(buyTicket,"c").start();}
}class BuyTicket implements Runnable{//票private int ticketNums=10;boolean flag=true;//外部停止方式@Overridepublic void run() {//买票while (flag){try {buy();} catch (InterruptedException e) {e.printStackTrace();}}}//锁 this本身private synchronized void buy() throws InterruptedException {//判断是否有票if (ticketNums <=0) {flag=false;return;}//模拟延迟Thread.sleep(100);//买票System.out.println(Thread.currentThread().getName()+"拿到"+ticketNums--);}
}
package com.company.syn;
//不安全的取钱
//两个人去银行取钱
public class UnsafeBank {public static void main(String[] args) {Account account = new Account("投资基金",100);Drawing boy=new Drawing(account,50,"a");Drawing girl=new Drawing(account,100,"b");boy.start();girl.start();}
}//账户
class Account{int money;//余额String name;//卡名public Account(String name ,int money ) {this.name = name;this.money = money;}}
//银行:模拟取钱
class Drawing extends Thread{Account account;//账户int drawingMoney;//取了多少钱int nowMoney;//剩余多少钱public Drawing(Account account,int drawingMoney, String name){super(name);this.account=account;this.drawingMoney=drawingMoney;}//取钱@Overridepublic  void run() {//锁的对象就是变化的量,需要增删改synchronized (account){//判断是否有钱if (account .money-drawingMoney<0) {System.out.println(Thread.currentThread().getName()+"钱不够");return;}//模拟延迟 sleep放大问题的发生性try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//卡内余额account.money=account.money-drawingMoney;//手里的钱nowMoney=+drawingMoney;System.out.println(account.name+"余额为"+account.money);//this.getName()==Thread.currentThread().getName()System.out.println(this.getName()+"手里的钱"+nowMoney);  }}
}
package com.company.syn;
import java.util.ArrayList;
import java.util.List;
public class UnsafeList {public static void main(String[] args) {List<String> list = new ArrayList<>();for (int i = 0; i < 10000; i++) {new Thread(()->{synchronized (list){list.add(Thread.currentThread().getName());}).start();}try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(list.size());}
}

同步方法及同步块

同步块:synchronized(Obj){}
Obj 称之为同步监视器
1.Obj可以是任何对象,但是推荐使用共享资源作为同步监视器
2.同步方法中无需指定同步监视器,因为同步方法的同步监视器就是this就是这个对象的本身,或者是class
3.同步监视器的执行过程
第一个线程访问,锁定同步监视器,执行其中代码
第二个线程访问,发现同步监视器被锁定,无法访问
第一个线程访问完毕,解锁同步监视器
第二个线程访问,发现同步监视器没有锁,然后锁定并访问

CopyOnWriteArrayList

package com.company.syn;import java.util.concurrent.CopyOnWriteArrayList;//测试JUC安全类型的集合
public class TestJUC {public static void main(String[] args) {CopyOnWriteArrayList list=new CopyOnWriteArrayList<>();for (int i = 0; i < 10000; i++) {new Thread(()->{list.add(Thread.currentThread().getName()) ;}).start();}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(list.size());}
}

死锁

1.某一个同步块同时用哟偶“两个以上对象的锁”就可能发生死锁
2.产生死锁的四个必要条件:1.互斥条件:一个资源每次只能被一个进程使用2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放3.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

Lock锁

1.显示定义同步锁对象来实现同步,同步锁使用look对象充当
2.java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Look对象加锁,线程开始访问资源之前应先获得Look对象
3.ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentrantLock,可以显示加锁,释放锁。
1.lock是现实锁(手动开启和关闭锁)synchronized是隐式锁,除了作用域自动释放
2.lock只有代码块锁,synchronized有代码块锁和方法锁
3.lock>同步代码块(已经进入了方法体,分配了相应资源)>同步方法(在方法体之外)
package com.company.syn;import java.util.concurrent.locks.ReentrantLock;//测试lock锁
public class TestLock {public static void main(String[] args) {TestLock2 t2 = new TestLock2();TestLock2 t3 = new TestLock2();TestLock2 t4= new TestLock2();new Thread(t2,"a").start();new Thread(t3,"b").start();new Thread(t4,"c").start();}
}
class TestLock2 implements  Runnable{int ticketNums=10;//定义Lock锁private  final  ReentrantLock lock=new ReentrantLock();@Overridepublic void run() {while (true){try {lock.lock();//加锁if (ticketNums >0) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+ticketNums--);}else {break;}}finally {//解锁lock.unlock();}}}
}

生产者消费者问题

1.线程协作 
2.synchronized可阻止并发更新同一个共享资源,实现了同步
3.synchronized不能用来实现不同线程之间的消息传递(通信)
1.解决通信的方法:1.wait()  表示线程一直等待直到其他线程通知,与sleep不同会释放锁2.wait(long timeout)  指定等待的毫秒数3.notify()  唤醒一个处于等待状态的线程4.notifyAll() 唤醒同一个对象上所有调用wait()方法的线程,优先级>5.均是Object类的方法,都只能在同步方法或同步代码块中使用

管程法

package com.company.over;//测试生产者消费者模型-->利用缓冲区解决:管程法
//生产者 消费者 产品 缓冲区
public class TestProducer {public static void main(String[] args) {Syncontainer container = new Syncontainer();new Producer(container).start();new Consumer(container).start();}
}//生产者
class Producer extends Thread {Syncontainer container;public Producer(Syncontainer container) {this.container = container;}//生产@Overridepublic void run() {for (int i = 0; i < 100; i++) {container.push(new Chicken(i));System.out.println("生产力" + i + "只鸡");}}
}//消费者
class Consumer extends Thread {Syncontainer container;public Consumer(Syncontainer container) {this.container = container;}//消费@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println("消费了" + container.pop().id + "只鸡");}}
}//产品
class Chicken {int id;//产品编号public Chicken(int id) {this.id = id;}
}//缓冲区
class Syncontainer {//需要一个容器大小Chicken chickens[] = new Chicken[10];//容器计数器int count = 0;//生产者放入产品public synchronized void push(Chicken chicken) {//如果容器满了,就需要等待消费者消费if (count == chickens.length) {//通知消费者,生产者等待try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}//如果没有满,丢入产品chickens[count] = chicken;count++;//可以通知消费者消费this.notifyAll();}//消费者消费产品public synchronized Chicken pop() {//判断能否消费if (count == 0) {//等待生产者生产,消费者等待try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}//如果可以消费count--;Chicken chicken = chickens[count];//吃完通知生产者生产this.notifyAll();return chicken;}
}

信号灯法

package com.company.over;
//测试生产者消费者模型-->信号灯法,标志位解决
public class TestPc2 {public static void main(String[] args) {Tv tv=new Tv();new Player(tv).start();new Watcher(tv).start();}
}//生产者->演员
class Player extends Thread{Tv tv;public  Player(Tv tv) {this.tv=tv;}@Overridepublic void run() {for (int i = 0; i < 20; i++) {if (i %2==0) {this.tv.play("BBC start");}else {this.tv.play("youtube start");}}}
}
//消费者-->观众
class Watcher extends Thread{Tv tv;public  Watcher(Tv tv) {this.tv=tv;}@Overridepublic void run() {for (int i = 0; i < 20; i++) {tv.watch( );}}
}
//产品-->节目
class Tv{//演员表演,观众等待//观众观看,演员等待String voice;//表演的节目boolean flag=true;//表演public synchronized void play(String voice){//演员未开始表演if (!flag ) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("演员表演了"+voice);//通知观众观看this.notifyAll();//通知唤醒this.voice=voice;this.flag=!this.flag;}//观看public synchronized void watch(){if (flag ==true) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("观看了"+voice);//通知演员表演this.notifyAll();this.flag=!this.flag;}
}

线程池

1.提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。
2.可以避免频繁创建和销毁,实现重复利用,提高响应速度,降低资源消耗,便于线程管理。
3.ExecutorService:真正的线程池接口。常见的子类ThreadPoolExecutor
4.Executors:工具类,线程池的工厂类,用于创建并返回不同类型的线程池
package com.company.over;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestPool {public static void main(String[] args) {//创建线程池 newFixedThreadPool 参数为线程池大小ExecutorService service= Executors.newFixedThreadPool(10);//执行service.execute(new MyThread());service.execute(new MyThread());service.execute(new MyThread());service.execute(new MyThread());//关闭连接service.shutdown();}
}class MyThread implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().getName());}
}

总结

package com.company.summarize;import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;//总结线程创建
public class TestOver {public static void main(String[] args) {new MyThread1().start();new Thread(new MyThread2()).start();FutureTask<Integer> futureTask=new FutureTask<Integer>(new MyThread3());new Thread(futureTask).start();try {Integer integer=futureTask.get();System.out.println(integer);} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}}
//1.继承Thread类
class MyThread1 extends Thread{@Overridepublic void run() {System.out.println("MyThread1");}
}
//2.实现Runnable接口
class MyThread2 implements Runnable{@Overridepublic void run() {System.out.println("MyThread2");}
}
//3.实现Callable接口
class MyThread3 implements Callable<Integer>{@Overridepublic Integer call() throws Exception {System.out.println("MyThread3");return 111;}
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 手撕单链表中的方法

    设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性&#xff1a;val 和 next。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。如果要使用双向链表&#xff0c;则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所…...

    2024/4/20 2:59:29
  2. Broken Keyboard(deque解法)

    You’re typing a long text with a broken keyboard. Well it’s not so badly broken. The only problem with the keyboard is that sometimes the “home” key or the “end” key gets automatically pressed (internally). You’re not aware of this issue, since you’…...

    2024/4/20 6:13:15
  3. NLP自然语言 - jieba分词库

    jieba&#xff08;结巴&#xff09;是一个强大的分词库&#xff0c;完美支持中文分词&#xff0c;本文对其基本用法做一个简要总结。 1.安装jieba pip install jieba 2.简单用法 结巴分词分为三种模式&#xff1a;精确模式&#xff08;默认&#xff09;、全模式和搜索引擎模…...

    2024/4/24 13:08:03
  4. 习题3-1 得分

    习题3-1 得分 给出一个由O和X组成的串&#xff08;长度为1~80&#xff09;&#xff0c;统计得分&#xff0c;每个O的得分为母亲连续出现的O的个数&#xff0c;X的得分为0。例如&#xff0c;OOXXOXXOOO的得分为1200100123。 #include <stdio.h> #include <iostream>…...

    2024/4/2 3:22:09
  5. 消费贷利率

    先说结论 贷款中介产品&#xff1a;额度30万元&#xff0c;服务费3000元&#xff0c;年华利率4.35%&#xff0c;授信3年&#xff0c;先息后本&#xff0c;每月还息&#xff0c;一年后换本。 真实贷款年华利率&#xff1a;5.514% 为了简单计算我们一次性提取30万元&#xff0c…...

    2024/3/16 0:34:43
  6. 大神带你玩转后端开发神器Swagger3——一篇文章精通接口文档自动生成Swagger3和OpenApi规范

    知识资源共享&#xff0c;一起交流怎么学习高效开发 请关注订阅&#xff0c;本专栏会详细讲解JAVA高效开发 本篇内容专门为从事Java后端开发的面试者提供帮助&#xff0c;精准解决面试遇到的问题&#xff0c;欢迎讨论 文章目录知识资源共享&#xff0c;一起交流怎么学习高效开…...

    2024/4/27 8:44:51
  7. 静态反调试技术(1)

    声明 静态反调试目的 被调试的进程用静态反调试技术来侦测自身是否处于被调试状态&#xff0c;若侦测到处于被调试的状态&#xff0c;则执行非常规代码&#xff08;主要是终止代码&#xff09;来阻止。具体的实现方法包括调试器检测方法&#xff0c;调试环境检测方法&#xf…...

    2024/4/26 18:42:44
  8. 为金三银四做准备:283页Java面试五大核心知识 看完你也能定级阿里P7

    前言 对于大部分程序员来说&#xff0c;一线互联网是的工作经历是毕生的追求&#xff0c;实际上大厂对于学历的要求远远没有我们想象的那么高&#xff0c;近几年来&#xff0c;互联网公司更注重技术&#xff0c;所以提升自身技术水平才是斩获offer的制胜关键。一线互联网以阿里…...

    2024/4/19 7:33:56
  9. BIGDATA-redis

    01.NoSQL入门概述 1.互联网时代背景下大机遇&#xff0c;为什么用NoSQL 1.单机MySQL的美好年代 在90年代&#xff0c;一个网站的访问量一般都不大&#xff0c;用单个数据库完全可以轻松应付。 在那个时候&#xff0c;更多的都是静态网页&#xff0c;动态交互类型的网站不多。…...

    2024/4/20 13:12:52
  10. 使用Vue-draggable组件实现表格拖拽效果

    1.安装组件 npm install vuedraggable -S 2.引入组件 完整代码&#xff1a;helloWorld.vue <template><div class"hello"><el-button click"getData()">加载数据</el-button><table class"dataTabble" v-for"…...

    2024/4/25 2:42:51
  11. 最硬核的方式找女朋友:用 VS Code 找对象?还是不看脸的那种?!

    转自&#xff1a;量子位&#xff08;ID&#xff1a;QbitAI&#xff09; VS Code现在居然可以用来谈恋爱了。 为了用最硬核的方式找到男&#xff08;女&#xff09;朋友&#xff0c;23岁的程序员Ben Awad在VS Code里打造一个约会软件VSinder。 顾名思义&#xff0c;VSinder VS…...

    2024/4/21 21:34:33
  12. JVM学习纪要(一)

    JVM学习纪要一、内存区域的划分程序计数器虚拟机栈局部变量表本地方法栈Java堆方法区二、对象创建过程内存布局对象头实例数据对齐填充对象访问三、垃圾与垃圾回收引用对象的死亡判定引用计数引用可达死亡与清理方法区的回收类的回收垃圾收集器理论与实现理论三种实现思路实现根…...

    2024/3/28 22:19:08
  13. 搭建PXE服务及实现安装银河麒麟桌面操作系统

    搭建PXE服务及实现安装银河麒麟桌面操作系统 一、安装PXE服务器前的准备 服务器操作系统&#xff1a;银河麒麟高级服务器操作系统V10 SP1 服务器IP地址&#xff1a;em1 172.17.31.163 用于连接外网&#xff0c;可以进行yum安装相关服务 em2 192.168.1.1 用于DHCP服务网段的配…...

    2024/3/7 1:14:39
  14. 阿里2021年版十亿级并发系统设计+java性能优化实战文档

    前言 快过年了&#xff0c;不知道大家回家了吗? 说也奇怪&#xff0c;快过年了疫情竟然严重了&#xff0c;又到了全民戴口罩做防护的时候。 好多人都是在隔离&#xff0c; 在待业&#xff0c;在家里面已经开始思索&#xff0c;为2021年的发展做计划&#xff0c;怎样才能让自…...

    2024/4/28 1:59:18
  15. 【小白必备】IP编址的干货,你值得拥有!

    【温馨提示】需要资料或者需要进群交流划到最底部 点分十进制 在学习编址之前&#xff0c;我们首先来了解一下IP地址。现在所使用的IP地址为版本4&#xff0c;一共32bit&#xff0c;二进制组成。 如果用二进制直接去表示IP地址&#xff0c;那么32个0和1对于人类来说识别起来过…...

    2024/3/7 1:14:37
  16. 七大步骤、备战60天,4面拿下字节跳动offer:时间规划+知识点+画脑图+做笔记+看书+看视频+刷题刷题

    前言 5年前&#xff0c;BAT冲到了风口浪尖&#xff0c;美国上市的阿里成为中国体量最大的互联网公司&#xff0c;腾讯借助微信成为移动互联网的霸主&#xff0c;外企开始撤离中国&#xff0c;国企的光环也慢慢褪去。 到了近年&#xff0c;应届毕业生心中最炙手可热的公司换成…...

    2024/3/30 0:30:31
  17. 盘点一款好用的App免邀请码的渠道统计工具

    1、Xinstall功能介绍 Xinstall是一款集智能传参、快速安装、一键拉起、多维数据统计等功能&#xff0c;帮住企业提高APP拉新转化率、安装率和多元化精确统计渠道效果的产品&#xff0c;同时免费提供Universal Link配置功能&#xff0c;提升应用转化效果。 传递智能参数&#…...

    2024/3/7 1:14:37
  18. springcloud 学习记录-2020

    参考文章&#xff1a; https://www.coder4.com/homs_online/ 从0到1实战微服务架构 https://www.iteye.com/blog/youyu4-2405976 分布式应用雪崩效应 springcloud 概念 微服务架构 优点&#xff1a;微服务低耦合、易维护、适合团队协作、测试起来成本更低&#xff0c;也更易于…...

    2024/3/7 1:14:35
  19. 为什么黑客用“脚”都能黑进去的小网站,也开始用SSL证书了?

    为什么黑客用“脚”都能黑进去的小网站&#xff0c;也开始用SSL证书了&#xff1f; 像蔚可云这样专业的云产品和服务提供平台&#xff0c;对数据安全有刻骨铭心的了解&#xff0c;因此在建站之初&#xff0c;就早早地启用了https站点。 但不知道从什么时候开始&#xff0c;一…...

    2024/3/7 1:14:33
  20. Dependency ‘ commons-io: commons-io:2.6‘ not found

    问题如下&#xff0c;使用idea2019配置maven3.6.0&#xff0c;第一次创建&#xff0c;使用maven导入jar提示如下 对比maven的setting.xml文件后&#xff0c;发现是jak配置写错了一个单词&#xff0c;这是修改后的&#xff0c;我在上传一份正常配置完的setting.xml文件 <?xm…...

    2024/3/7 1:14:32

最新文章

  1. 语义分割——json文件转shp

    前言 在用labelme标注遥感图像后会生成json文件&#xff0c;如果我们想要shp文件&#xff0c;下面给出了具体实现流程。 一、依赖配置 import json import geopandas as gpd from shapely.geometry import Polygon from osgeo import gdal import argparse import glob import…...

    2024/4/28 2:02:28
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. JVM笔记

    1.JVM与Java体系结构 1.1. 前言 作为Java工程师的你曾被伤害过吗&#xff1f;你是否也遇到过这些问题&#xff1f; 运行着的线上系统突然卡死&#xff0c;系统无法访问&#xff0c;甚至直接OOM想解决线上JVM GC问题&#xff0c;但却无从下手新项目上线&#xff0c;对各种JVM…...

    2024/4/26 0:12:59
  4. Docke搭建Lidarr

    Lidarr 是一个基于音乐的下载管理器&#xff0c;它可以监控多个 RSS 订阅源以查找用户指定类型的音乐并与支持的下载客户端协同工作。Lidarr 旨在自动化音乐下载过程&#xff0c;并整合到用户的音乐库中。它可以搜索歌曲&#xff0c;自动下载和整理音乐文件&#xff0c;更新元数…...

    2024/4/22 18:24:51
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/27 1:53:53
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/27 3:39:11
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/27 12:24:35
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/27 12:24:46
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/27 3:39:08
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/27 3:39:07
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/27 3:39:07
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/27 12:44:49
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/27 21:08:20
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/26 22:35:59
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/27 18:40:35
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/27 3:39:03
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/27 13:52:15
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/27 13:38:13
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/27 1:03:20
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/27 3:22:12
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/27 22:51:49
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/27 3:39:00
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/26 23:53:24
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/27 20:28:35
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

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

    2022/11/19 21:17:18
  26. 错误使用 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,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
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  44. 如何在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