
第16章:线程
# JavaCore之线程
阿呆布衣酷
纯干货学习笔记:无盈利目的,只想帮自己成长
展开
-
13.生产者消费者_2:生产者消费者问题代码
13.生产者消费者_2:生产者消费者问题代码完成:第一遍public class Test { public static void main(String[] args) { ProductPool pool = new ProductPool(); Producer p1 = new Producer("生产者1", pool); Producer p2 = new Producer("生产者2", pool); Produce原创 2020-08-31 21:02:57 · 237 阅读 · 0 评论 -
10.线程安全问题_3:代码
10.线程安全问题_3:代码完成:第一遍public class Test { public static void main(String[] args) { SaleTicket saleTicket = new SaleTicket(); Thread threadFir = new Thread(saleTicket,"1号窗口"); Thread threadSec = new Thread(saleTicket,"2号窗口"); Threa原创 2020-08-31 20:58:31 · 198 阅读 · 0 评论 -
9.线程安全问题_2:synchronized关键字有什么作用???什么是锁???同步代码块或同步方法执行过程是怎样的???线程同步有什么优缺点???
9.线程安全问题_2:synchronized关键字有什么作用???什么是锁???同步代码块或同步方法执行过程是怎样的???线程同步有什么优缺点???完成:第一遍1.synchronized关键字有什么作用???synchronized两种方式:同步代码块、同步方法被synchronized包围的代码块,称为同步代码块被synchronized修饰的方法,称为同步方法2.什么是锁???锁,也称为对象锁,每个对象都自带一个锁(标识),且不同对象的锁是不一样的3.同步代码块或同步方法执行过程是怎原创 2020-08-31 20:57:18 · 304 阅读 · 0 评论 -
14.线程单例:线程单例和单例模式的区别???如何实现线程单例???
跟汤老师学Java笔记:线程单例完成:第一遍1.线程单例和单例模式的区别?单例模式:在整个应用程序中只有一个实例线程单例:为每个线程提供一个实例同一个线程获取的是一个实例不同线程获取的是不同的实例2.Java中如何实现线程单例?Java中提供了一个ThreadLocal,直接提供了线程单例的解决方案用于管理变量,提供了线程局部变量它为变量在每个线程中都存储了一个本地的副本ThreadLocal:本质是Map集合,将线程当做key,保证线程唯一package season16;i原创 2020-07-03 17:30:24 · 439 阅读 · 0 评论 -
12.生产者消费者_1:什么是生产者消费者问题???
跟汤老师学Java笔记:生产者消费者问题完成:第一遍1.什么是生产者消费者问题?生产者消费者问题是多线程同步的一个经典问题,即并发协作的问题所谓生产者消费者问题,实际上主要是包含了两种线程:生产者线程、消费者线程生产者线程:生产商品并放入缓冲区当缓冲区满时,生产者不可再生产商品消费者线程:从缓冲区中取出商品当缓冲区为空时,消费区不可再取出商品...原创 2020-07-03 16:57:38 · 269 阅读 · 0 评论 -
11.线程间的通信:什么是锁池和等待池???线程间的通信有哪三个常用方法???
跟汤老师学Java笔记:线程间的通信完成:第一遍1.什么是锁池和等待池?Java中任何一个对象都自带锁、锁池和等待池三个东西锁池:当线程执行synchronized块时如果无法获取特定对象上的锁,此时会进入该对象的锁池当锁被归还给该对象时,锁池中的多个线程会竞争获取该对象的锁获取对象锁的线程将执行synchronized块,执行完毕后会释放锁等待池:当线程获取对象的锁后,可以调用 wait() 方法放弃锁,此时会进入该对象的等待池当其他线程调用该对象的 notify() 或 notify原创 2020-07-03 15:22:05 · 324 阅读 · 0 评论 -
跟汤老师学Java笔记:如何创建线程同步即安全的单例模式
跟汤老师学Java笔记:如何创建线程同步即安全的单例模式完成:第一遍1.如何创建线程同步即安全的单例模式?package season16;//线程同步即安全的创建单例模式public class TestThread { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println(Sing原创 2020-07-03 14:13:55 · 115 阅读 · 0 评论 -
8.线程安全问题_1:什么是线程安全问题???线程安全问题产生的原因是什么???如何解决线程安全问题???
跟汤老师学Java笔记:线程安全问题完成:第一遍1.什么是线程安全问题?多个线程同时访问共享数据时可能会出现问题,称为线程安全问题2.线程安全问题产生的原因是什么?当多线程访问共享数据时,由于CPU的切换,导致一个线程只执行了关键代码的一部分,还没执行完此时另一个线程参与进来,导致共享数据发生异常3.如何解决线程安全问题?**解决:通过线程同步机制synchronized + 锁来解决线程安全问题synchronized两种方式:同步代码块、同步方法**4.synchronized关键字原创 2020-07-03 14:12:26 · 220 阅读 · 0 评论 -
7.线程生命周期的相关方法:线程生命周期的相关方法有哪五个???
跟汤老师学Java笔记:线程生命周期的相关方法完成:第一遍1.线程生命周期的相关方法有哪些?方法:thread.start()作用: 启动线程,线程进入就绪状态(可运行状态)方法:Thread.sleep()作用:休眠线程,线程从执行状态进入阻塞状态 静态方法方法:Thread.yield()作用: 暂停执行线程,线程从执行状态进入就绪状态 静态方法放弃当前CPU时间片,重新争抢方法:thread.join()作用:暂停执行线程,等待另一个线程执行完毕后再执行,线程从执行状态进入阻塞状原创 2020-07-03 13:08:23 · 178 阅读 · 0 评论 -
6.线程优先级:Thread中有哪几个线程优先级常量???
跟汤老师学Java笔记:线程优先级完成:第一遍1.Thread中有哪几个线程优先级常量?线程优先级范围[1,10], 优先级越高,执行机会越大,只是概率,并不一定最大优先级即10:Thread.MAX_PRIORITY最小优先级即1:Thread.MIN_PRIORITY普通优先级即5:Thread.NORM_PRIORITY2.线程优先级中常用方法有哪些?方法:thread.setPriority(10)作用:设置线程优先级方法:thread.getPriority()作用:得到线程原创 2020-07-03 06:10:59 · 1330 阅读 · 0 评论 -
5.线程的生命周期:线程的生命周期什么样子???哪些情况会让线程从运行状态进入到阻塞状态???哪些情况会让线程从阻塞状态进入到就绪状态???
跟汤老师学Java笔记:线程的生命周期完成:第一遍1.线程的生命周期什么样子?线程正常运行四种状态:状态一:线程新建状态:new Thread():创建线程对象状态二:线程就绪状态:thread对象调用start()方法进去就绪状态,等待CPU权限状态三:线程运行状态:就绪状态获得CPU时间片状态四: 线程销毁状态:当代码执行完毕当遇到各种意外情况时可能会进入:状态五:阻塞状态当线程执行wait()方法,会进入:状态六:进入等待池状态:此时线程调用notify()或notifyAll(原创 2020-07-03 05:53:32 · 1540 阅读 · 0 评论 -
4.创建线程两种方式的对比:创建线程两种方式的对比???
跟汤老师学Java笔记:创建线程两种方式的对比完成:第一遍1.创建线程两种方式的对比?继承Thread类线程执行的代码放在Thread类的子类的run方法中该方法局限性:无法再继承其他类实现Runnable接口线程执行的代码放在Runnable接口的实现类的run方法中该方法的优势:一是可以extends继承其他的类,避免单继承的局限性二是适合多个相同程序代码的线程去处理同一个资源,增强程序的健壮性package code16;/* * 现象:输出结果可能未按照顺序显示 * 原因原创 2020-07-03 05:20:03 · 93 阅读 · 0 评论 -
3.创建线程二_实现Runnable接口:如何通过实现Runnable接口来创建线程方法???创建线程代码如何实现???如何得到当前线程和当前线程名字???
跟汤老师学Java笔记:创建线程方法二实现Runnable接口完成:第一遍1.如何通过实现Runnable接口来创建线程方法?步骤:(1).定义一个类,实现Runnable接口,实现run()方法(2).创建实现类的实例,(3).创建Thread类的一个实例,将上一步中实现类的实例作为参数传入(4).调用start()方法,启动线程2.创建线程代码如何实现?MyRunnable myRunnable = new MyRunnable();//MyRunnable 该类实现Runnable接原创 2020-07-03 04:53:28 · 259 阅读 · 0 评论 -
2.创建线程方式一_继承Thread类:创建线程有哪四种方式???如何通过继承Thread类来创建线程???Thread常用方法有哪四个???
跟汤老师学Java笔记:创建线程方式一是继承Thread类完成:第一遍1.、创建线程有哪两种方式?两种方式:继承Thread类实现Runnable接口2.如何通过继承Thread类来创建线程?步骤:(1). 定义一个类,继承自Thread类,重写run()方法(2). 创建该类的实例,即创建一个线程(3).调用start()方法,启动线程(不能直接调用run()方法)3.Thread常用方法有哪些?方法:thread1 .setName(“线程1”)作用:给线程设置名字方法: t原创 2020-07-03 04:36:00 · 270 阅读 · 0 评论 -
1.线程简介:什么是进程???什么是线程???线程和进程之间有哪些关系???什么是CPU时间片???
跟汤老师学Java笔记:线程简介完成:第一遍1.什么是进程?进程:在操作系统中独立运行的程序,每运行一个应用程序就对应着一个进程 process多进程:在操作系统中可以同时运行多个应用程序2.什么是线程?线程:是进程内部的一个执行单元,用来执行应用程序中一个功能 thread多线程:在一个应用程序中可以同时执行多个功能,例如迅雷中同时执行多个下载任务就是多线程3.线程和进程之间有哪些关系?一个进程中可以包含多个线程,且至少要有一个线程一个线程必须属于某个进程,进程是线程的容器一个进程中原创 2020-07-03 00:27:55 · 395 阅读 · 0 评论