上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 50 下一页
摘要: 与使用Runnable相比,Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助 FutureTask 类,比如获取返回结果 Future接口 可以对具体 Runnable、Callable 任务的执行结果进行取消、查询是否完成、获取结果等。 阅读全文
posted @ 2021-04-14 14:13 klvchen 阅读(182) 评论(0) 推荐(0)
摘要: 生产者(Producer)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品,店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员会叫生产者停一下,如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品了,店员会告诉消费者等一下,如果店中有产 阅读全文
posted @ 2021-04-14 13:48 klvchen 阅读(317) 评论(0) 推荐(0)
摘要: 线程通信的例子:使用两个线程打印1-180。线程1,线程2交替打印 涉及到的三个方法: wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。 notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。 notifyALL(): 阅读全文
posted @ 2021-04-13 14:32 klvchen 阅读(78) 评论(0) 推荐(1)
摘要: 银行有一个账户。 有两个储户分别向同一个账户存3000元,每次存1000,存3次。每次存完打印账户余额。 问题:该程序是否有安全问题,如果有,如何解决? 分析: 是否是多线程问题?是,两个储户线程 是否有共享数据?有,账户(或账户余额) 是否有线程安全问题?有 需要考虑如何解决线程安全问题?同步机制 阅读全文
posted @ 2021-04-13 13:58 klvchen 阅读(108) 评论(0) 推荐(0)
摘要: Lock(锁) 从 JDK 5.0开始,Java 提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当。 java.util.concurrent.locks.Lock 接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程 阅读全文
posted @ 2021-04-12 17:49 klvchen 阅读(75) 评论(0) 推荐(0)
摘要: 死锁 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁 出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续 解决方法 专门的算法、原则 尽量减少同步资源的定义 尽量避免嵌套同步 例子一: package com.klvch 阅读全文
posted @ 2021-04-12 16:58 klvchen 阅读(71) 评论(0) 推荐(0)
摘要: 如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为 private,这样,就不能用 new 操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中 阅读全文
posted @ 2021-04-12 15:10 klvchen 阅读(77) 评论(0) 推荐(0)
摘要: 同步方法解决线程安全问题 如果操作共享数据的代码完整的声明在一个方法中,我们不妨将此方法声明同步的。 同步方法的总结: 1.同步方法仍然涉及到同步监视器,只是不需要我们显式的声明。 2.非静态的同步方法,同步监视器是:this 静态的同步方法,同步监视器是:当前类本身 使用实现Runnable接口创 阅读全文
posted @ 2021-04-12 14:11 klvchen 阅读(69) 评论(0) 推荐(0)
摘要: Thread类的有关方法 void start(): 启动线程,并执行对象的run()方法 run(): 线程在被调度时执行的操作 String getName(): 返回线程的名称 void setName(String name): 设置该线程名称 static Thread currentTh 阅读全文
posted @ 2021-04-12 10:52 klvchen 阅读(128) 评论(0) 推荐(0)
摘要: 线程的生命周期 JDK 中用 Thread.state 类定义了线程的几种状态 要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用 Thread 类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态: 新建: 当一个Thread类或其子类的对象被声明并创建时, 阅读全文
posted @ 2021-04-10 18:54 klvchen 阅读(80) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 50 下一页