多线程
别拦着我,我要学习
这个作者很懒,什么都没留下…
展开
-
JDK5.0新增创建线程的方式
方式一:实现Callable接口与使用Runnable相比,Callable功能更强大相比run()方法,可以有返回值方法可以抛出异常支持泛型的返回值需要借助FutureTask类,比如获取返回结果如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大?call()有返回值可以抛出异常,被外面的操作捕获,获取异常的信息Callable是支持泛型的步骤:5. 创建一个实现Callable的实现类6. 实现call方法,将此线程需要执行的操原创 2020-10-16 19:42:29 · 145 阅读 · 0 评论 -
线程的通信
线程通信的例子:使用两个线程打印1-100.线程1,线程2交替打印涉及到的三个方法:wait():一旦执行此方法,当前线程就会进入阻塞状态,并释放同步监视器notify():一旦执行此方法,就会唤醒被wait()的一个线程。如果有多个线程被wait,就会唤醒优先级高的那个notifyAll():一旦执行此方法,就会唤醒所有被wait的线程说明:wait(),notify(),notifyAll()三个方法必须使用在同步代码块或同步方法中这三个方法的调用者必须是同步代码块或同步方法中的同步原创 2020-10-16 14:33:00 · 55 阅读 · 0 评论 -
解决线程安全问题的方式:Lock锁
Lock锁 ——JDK5.0新增class Window4 implements Runnable{ private int ticket=100; //1.实例化ReentrantLock private ReentrantLock lock=new ReentrantLock(); @Override public void run() { while (true) { try { //2.原创 2020-10-16 00:50:10 · 131 阅读 · 0 评论 -
线程的死锁问题
死锁问题不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁说明:出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续我们使用同步时,要避免出现死锁public class ThreadTest { public static void main(String[] args) { StringBuffer s1=new StringBuffer(); StringBuffer s原创 2020-10-16 00:21:34 · 86 阅读 · 0 评论 -
单例模式-懒汉式安全问题解决
方式一:效率较差public class BankTest {}class Bank{ private Bank(){ } private static Bank instance=null; public static Bank getInstance(){ synchronized (Bank.class) { if (instance == null) { instance = new Ban原创 2020-10-15 23:51:51 · 144 阅读 · 0 评论 -
线程的安全问题
解决线程安全的方式在Java中,我们需要通过同步机制,来解决线程安全的问题同步的方式,解决了线程安全的问题。好处:操作同步代码时,只能有一个线程参与,其他线程等待,相当于是一个单线程的过程,效率低。方式一:同步代码块synchronized(同步监视器){需要被同步的代码}说明:操作共享数据的代码,即为需要被同步的代码共享数据:多个线程共同操作的变量同步监视器:俗称:锁。任何一个类的对象都可以来充当锁。要求:我们多个线程必须共用同一把锁。方式二:同步方法...原创 2020-10-15 22:16:17 · 71 阅读 · 0 评论 -
线程的生命周期
JDK中用Thread.state类中定义了线程的几种状态要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在他的一个完整的声明周期中通常要经历如下的五种状态:新建:当一个Thread类及其子类的对象被声明并创建时,新生的线程对象处于新建状态就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源运行:当就绪的线程被调度并获取CPU资源时,便进入运行状态,run()方法中定义原创 2020-10-15 14:02:07 · 93 阅读 · 0 评论 -
多线程基础以及创建线程的两种方法
程序(program):是为了完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process):是程序的一次执行过程,或是在**正在运行的一个程序。**是一个动态的过程:有它自身的产生、存在和消亡的过程。———生命周期线程(thread):进程可以进一步细化为线程,是一个程序内部的一条执行路径。线程的创建和使用:方式一:继承于Thread类创建一个继承于Thread类的子类重写Thread类的run()>>>>针对方法体,将此线程原创 2020-10-15 00:20:18 · 200 阅读 · 0 评论