![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
菜鸟的自我素养
java开发
展开
-
多线程创建的两种方式
1.继承Thread类: package com.java.Thread; /** @author jack @create 2019-07-09 18:31 多线程创建方式1:继承Thread类 */ public class MyThread extends Thread { //run()方法中书写当前方法的执行体 @Override public void run() { for (...原创 2019-07-09 22:25:22 · 202 阅读 · 0 评论 -
多线程中sleep()和wait()方法的的区别
相同点:一旦执行方法,当前线程都会进入阻塞状态 不同点: 1.两个方法的声明位置不同,sleep()是Thread类中的方法,wai()是Object类中的方法 2.调用要求不同:sleep()可以在任何场景下调用,wai()只能在同步代码块或者同步方法中调用、 3.是否释放同步监视器:如果两个方法都是用在同步方法或者同步代码块中,sleep()不释放同步监视器,wai()释放同步监视器 4.是否...原创 2019-07-11 00:22:01 · 482 阅读 · 0 评论 -
Exception in thread "打印机1" Exception in thread "打印机2" java.lang.IllegalMonitorStateException
多线程报如下异常: Exception in thread “打印机1” Exception in thread “打印机2” java.lang.IllegalMonitorStateException at java.lang.Object.notify(Native Method) at com.java.Number.run(PrintNumber.java:31) at java.lan...原创 2019-07-11 00:11:10 · 670 阅读 · 0 评论 -
线程间的通信
package com.java; /** @author jack @create 2019-07-10 23:46 线程间通信: wait(),notify(),notifyAll()三个方法实现线程间的通信 三个方法都是Object类中的方法,三个方法的调用者必须是同步监视器,且必须相同,三个方法必须都写在同步代码块中 */ public class PrintNumbe...原创 2019-07-11 00:02:12 · 139 阅读 · 0 评论 -
使用Lock解决线程安全问题
package com.java; import java.util.concurrent.locks.ReentrantLock; /** @author jack @create 2019-07-09 22:00 使用Lock解决线程安全问题 三种解决线程安全问题方式的区别: synchronized在执行完相应的代码之后会自动释放同步监视器,Lock需要手动的启动同步监视器lock()并且...原创 2019-07-10 23:33:04 · 308 阅读 · 0 评论 -
单例模式的两种创建方式
1.懒汉式 (1)使用同步方法的方式: package com.java.single; /** 懒汉式 @author jack @create 2019-07-10 22:26 */ public class LazySingle { public static void main(String[] args) { Dog dog = Dog.getDog() ; System.o...原创 2019-07-10 22:51:49 · 194 阅读 · 0 评论 -
线程安全问题
通过同步机制解决线程安全问题: 方式一:同步代码块 synchronized(同步监视器){ //同步代码块,需要被同步的代码 } 说明:操作共享数据的代码,即为需要被同步的代码,不能多包含也不能少包含 共享数据:多个线程共同操作的变量,比如ticket就是共享数据 同步监视器:锁,任何一个对象都可以作为锁 要求:多个线程共用同一个锁 5.同步方式解决了线程安全问题,但是每次只能有一个线程执行,相...原创 2019-07-09 23:54:59 · 105 阅读 · 0 评论 -
多线程的生命周期
获取cpu执行权 新建---------调用start()-------------- >就绪 -------------------->运行 失去执行权或yieled 就绪 <--------------------- 运行 运...原创 2019-07-09 22:54:34 · 135 阅读 · 0 评论 -
卖票两种实现方式----------多线程典型应用
1.使用继承Thread package com.java.Thread; /** @author jack @create 2019-07-09 19:34 */ public class Window extends Thread { private static int ticket =100; @Override public void run() { while (true){ if ...原创 2019-07-09 22:34:19 · 397 阅读 · 0 评论 -
线程创建方式之实现Callable接口
package com.java.thread; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /** 实现Callable接口 @author jack @create 2019-07-12...原创 2019-07-12 15:23:40 · 191 阅读 · 0 评论