多线程
qq_45162113
123456
展开
-
多线程-线程池
线程池线程池的创建方式一共有四种创建方式:Executors.newCachedThreadPool(); 创建一个无限大的线程池,线程大小和任务数保持一致。Executors.newFixedThreadPool(int xxx); 创建一个自定义线程数的线程池。如果任务大于自定义数,多余任务会暂时放在任务队列中等待空闲线程的执行。Executors.newSingleThreadExecutor(); 创建一个线程数为1的线程池,如果任务大于1,多余任务会暂时放在任务队列中等待空闲线程的执行原创 2021-01-28 17:00:42 · 164 阅读 · 0 评论 -
线程通信-生产者和消费者问题
线程通信Java提供了几个方法解决线程之间的通信问题,这些方法均是Object中的方法。方法名作用wait()表示线程一直等待,直到其它线程通知,与sleep不同,sleep不会释放锁而wait会释放锁wait(long timeout)指定等待的毫秒数notify()唤醒一个处于等待状态的线程notifyAll()唤醒用一个对象上所有调用wait()方法的线程,优先级高的线程优先调度为什么这些方法被定义子啊Object中?Java的每个对象中都有一原创 2021-01-27 17:28:12 · 129 阅读 · 0 评论 -
Lock锁-用Lock完成三窗口卖票
Lock锁从JDK5.0开始,Java提供了更强大的线程同步机制-通过显式定义同步锁对象来实现同步,同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock对象ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在现实线程安全的控制中,比较常用的是ReentrantLoc原创 2021-01-27 16:08:29 · 218 阅读 · 2 评论 -
死锁
死锁多个线程各自占有一些共享资源,并且互相等待其它线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题。//死锁:多个线程互相持有对方的资源,相互僵持。public class DeadLock { public static void main(String[] args) { MakeUp makeUp1 = new MakeUp(0, "greed1"); MakeUp ma原创 2021-01-27 15:42:22 · 97 阅读 · 0 评论 -
同步方法-synchronized
由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种使用方法:synchronized方法和synchronized块。synchronized方法控制对“对象”的访问,每一个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象锁才能执行,否则线程会阻塞,方法一旦执行,就独占该锁,直到该方法返回才释放锁,后面被阻塞的线程才能获得这个锁,继续执行。同步方法:实现线程安全的三窗口.原创 2021-01-26 16:17:43 · 177 阅读 · 0 评论 -
守护线程
守护线程线程分为用户线程和守护线程用户 (User) 线程:运行在前台,执行具体的任务,如程序的主线程、连接网络的子线程等都是用户线程守护 (Daemon) 线程:运行在后台,为其他前台线程服务。也可以说守护线程是 JVM 中非守护线程的 “佣人”。一旦所有用户线程都结束运行,守护线程会随 JVM 一起结束工作虚拟机必须确保用户线程完毕,虚拟机不用等待守护线程执行完毕;main 函数所在的线程就是一个用户线程啊,main 函数启动的同时在 JVM 内部同时还启动了好多守护线程,比如垃圾回收线程。比较原创 2021-01-26 14:56:45 · 126 阅读 · 0 评论 -
线程的优先级
线程优先级Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。线程的优先级用数字表示,范围是1~10,默认优先级是5,公平竞争。使用getPriority().setPriorty(int xxx)方法可以获取优先级。优先级高的并不一定就一定先跑,但大多情况下会先执行。优先级低只意味获得调度的概率低,并不是优先级低就不会被调用,这都谁看CPU的调度public class 线程优先级 { public static void ma原创 2021-01-26 14:41:34 · 506 阅读 · 0 评论 -
线程状态的观测
人有生来病死,线程一样,线程主要有创建、就绪、运行、阻塞、死亡这五个状态。测试线程状态public class 测试线程状态 { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(()-> { for(int i = 0 ; i < 10 ; i++) { try { Thread.sleep(1000); .原创 2021-01-26 14:25:28 · 129 阅读 · 0 评论 -
Join 合并线程(插队)
JoinJoin合并线程,待此线程执行完成后,在执行其它线程,其它线程阻塞,可以想象成插队。package 线程状态;public class JoinThread implements Runnable{ public void run() { for(int i = 0 ; i < 10 ; i++) { System.out.println("vip线程来了" + i); } } public static void main(String[] args) t原创 2021-01-26 14:08:58 · 125 阅读 · 0 评论 -
Yield 线程礼让
线程礼让礼让线程,让当前正在执行的线程暂停,但不阻塞;将线程从运行状态转换为就绪状态;让CUP重新调度,礼让不一定成功,看CUP心情。//礼让不一定成功 Yieldpublic class 线程礼让 { public static void main(String[] args) { MyYield myYield = new MyYield(); new Thread(myYield,"a").start(); new Thread(myYield,"b").start(); }原创 2021-01-26 13:57:55 · 92 阅读 · 0 评论 -
用多线程实现倒计时和时间戳
倒计时public class 倒计时 { public static void main(String[] args) { Time time = new Time(10); new Thread(time).start(); }}class Time implements Runnable{ //定义需要倒计时的时间 private int times ; Time(int times){ this.times = times; } public void ru原创 2021-01-26 13:46:52 · 474 阅读 · 0 评论 -
多线程-线程停止
停止线程:1、建议线程正常停止,线程自己停下来才是最安全的,利用次数,不建议死循环。2、建议使用标志位,设置一个标志位。3、不要使用stop或者destroy等过时或者JDK不建议使用的方法。public class StopThread implements Runnable{ //设置一个标志位 private boolean flag = true; public void run() { int i = 0; while(flag) { System.out.prin原创 2021-01-26 13:26:44 · 212 阅读 · 0 评论 -
多线程-线程的创建
线程和进程**进程:**进程就是一个可执行的程序,拥有独立的内存空间,一个进程可也有多个线程,至少有一个线程。**线程:**线程是进程中的一个执行的任务(控制单元),多个线程可以共享数据。线程和进程的区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。每个进程都有独立的代码和数据空间,程序间切换有较大的开销;线程可以看作轻量级进程,同一类线程可共享代码和数据空间,每个线程都有自己独立的运行和程序计数器,线程间切换开销较小。创建线程方式1继承Thread类,重写run原创 2021-01-24 16:28:20 · 106 阅读 · 0 评论 -
多线程-三个窗口买票问题
//线程不安全 加同步锁/* * sybchronized(对象){}代码块 * sybchronized方法 * */public class 三窗口买票 { public static void main(String[] args) { S s=new S(); Thread t1=new Thread(s); Thread t2=new Thread(s); Thread t3=new Thread(s); t1.setName("一号窗口"); t2.set原创 2021-01-24 16:04:46 · 587 阅读 · 3 评论