![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
TU_TU9
Attitude is everything
展开
-
线程通信、线程池
1.线程通信 生产者—>数据缓存—>消费者 这是要给线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者相互依赖,互为条件 在生产者消费者问题中,仅有synchronized是不够的 synchronized可阻止并发更新同一个共享资源,实现了同步 synchronized不能用来实现不同线程之间的消息传递(通信) Java提供了几个方法解决线程之间的通信问题: wait()--------表示线程一直等待,直到其他线程来通知,与sleep不同,会释放锁 wait(lo原创 2022-03-18 17:49:17 · 391 阅读 · 0 评论 -
死锁和锁(Lock)
1.死锁原创 2022-03-18 16:27:17 · 587 阅读 · 0 评论 -
线程同步
1.并发 并发:同于一个对象被多个线程同时操作 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时候我们就需要线程同步,线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。 2、队列和锁 由于同一进程的多个线程共享同一块存储空间,再带来方便的同时,也带来了访问冲突的问题,为了保证数据在方法中被访问时的正确性,在访问时加入锁机制synchronized,当一个线程获得对象的排它锁,独占资源,其他线程必原创 2022-03-17 22:59:00 · 82 阅读 · 0 评论 -
线程状态
1.线程礼让(yeild) 当前线程停止,但并不阻塞 将线程从运行状态转为就绪状态 执行结果: 2.停止线程(stop) 执行结果: 3.线程休眠 (sleep) sleep指定当前线程阻塞的毫秒数,一千毫秒=一秒 sleep存在异常InterruptedException sleep时间达到后线程进入就绪状态 sleep可以模拟网络延迟,倒计时等等 没有给对象都有一个锁,sleep不会释放锁 执行结果: 4.线程状态(state) ...原创 2022-03-16 17:47:26 · 279 阅读 · 0 评论 -
静态代理、线程的优先级以及守护线程
1.静态代理模式 执行结果: 2.线程优先级 ps:执行结果的顺序也是不一样的 如下图,正常通常的优先级为5,最小为1,最大为10 3.守护(Daemon)线程 线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 如:后台记录操作日志,监控内存,垃圾回收。 ...原创 2022-03-15 17:31:33 · 899 阅读 · 1 评论 -
继承Thread类以及实现Runnable、Callable接口(包含Lamda表达式)
1. 执行结果: ps:调用的是start方法而不是run方法,在图中可以看到,如果调用run方法,是先执行开辟线程再执行主线程,而start方法是重写开辟一条线程并由CPU调度执行顺序。 2.实现多线程同步下载图片 ...原创 2022-03-13 12:13:26 · 379 阅读 · 0 评论 -
关于多线程简介
程序:静态的代码; 进程:程序执行的过程,操作系统分配资源的单位; 线程:CPU调度和执行的单位,独立执行的路径。互不影响,线程的执行由调度器安排,对同一资源进行操作时,需要并发控制。 创建多线程的三个方法: 定义一个类继承Thread,重写run()方法,run()方法里是程序执行体, 调用,创建一个该类的对象,并用 对象.start()方法开始。 定义一个类实现Runnable借口,编写run()方法,创建一个该类的对象ww,再创建一个Thread类的匿名对象,把ww作为参数传原创 2022-03-11 18:03:42 · 126 阅读 · 0 评论