多线程
全栈编程网
这个作者很懒,什么都没留下…
展开
-
volatile关键字
转载自: http://www.cnblogs.com/dolphin0520/p/3920373.htmlvolatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是转载 2018-01-07 18:59:52 · 155 阅读 · 0 评论 -
多线程总结
多线程总结:1,进程和线程的概念。|--进程:|--线程:2,jvm中的多线程体现。|--主线程,垃圾回收线程,自定义线程。以及他们运行的代码的位置。3,什么时候使用多线程,多线程的好处是什么?创建线程的目的?|--当需要多部分代码同时执行的时候,可以使用。4,创建线程的两种方式。★★★★★|--继承Thread|--步骤原创 2018-01-09 10:43:19 · 143 阅读 · 0 评论 -
多线程经典例子--生产者、消费者(2)Lock锁和Condition
/*jdk1.5以后将同步和锁封装成了对象。 并将操作锁的隐式方式定义到了该对象中,将隐式动作变成了显示动作。Lock接口: 出现替代了同步代码块或者同步函数。将同步的隐式锁操作变成现实锁操作。同时更为灵活。可以一个锁上加上多组监视器。lock():获取锁。unlock():释放锁,通常需要定义finally代码块中。Condition接口:出现替代了Object中的wait转载 2018-01-09 10:42:51 · 166 阅读 · 0 评论 -
多线程经典例子--生产者、消费者(1)
/*生产者,消费者。多生产者,多消费者的问题。if判断标记,只有一次,会导致不该运行的线程运行了。出现了数据错误的情况。while判断标记,解决了线程获取执行权后,是否要运行!notify:只能唤醒一个线程,如果本方唤醒了本方,没有意义。而且while判断标记+notify会导致死锁。notifyAll解决了本方线程一定会唤醒对方线程的问题。*/class Resourc转载 2018-01-08 22:50:29 · 1392 阅读 · 0 评论 -
多线程面试题--继承多态深入理解
package thread;public class Demo1 { public static void main(String[] args) { new Thread(new Runnable() { public void run() { System.out.println("runnable run"); } }) { publi原创 2018-01-08 22:41:03 · 291 阅读 · 0 评论 -
线程间通讯--ResourceDemo2 --等待/唤醒机制
/*等待/唤醒机制。 涉及的方法:1,wait(): 让线程处于冻结状态,被wait的线程会被存储到线程池中。2,notify():唤醒线程池中一个线程(任意).3,notifyAll():唤醒线程池中的所有线程。这些方法都必须定义在同步中。因为这些方法是用于操作线程状态的方法。必须要明确到底操作的是哪个锁上的线程。为什么操作线程的方法wait notify notif转载 2018-01-08 22:14:04 · 183 阅读 · 0 评论 -
线程间通讯--ResourceDemo1
/*线程间通讯:多个线程在处理同一资源,但是任务却不同。*///资源class Resource{ String name; String sex;}//输入class Input implements Runnable{ Resource r ;// Object obj = new Object(); Input(Resource r) { thi转载 2018-01-08 22:12:58 · 133 阅读 · 0 评论 -
多线程-死锁
/*死锁:常见情景之一:同步的嵌套。*/class Ticket implements Runnable{ private int num = 100; Object obj = new Object(); boolean flag = true; public void run() { if(flag) while(true) { synchro转载 2018-01-08 22:07:44 · 205 阅读 · 0 评论 -
线程安全的单例模式
/*多线程下的单例*///饿汉式class Single{ private static final Single s = new Single(); private Single(){} public static Single getInstance() { return s; }}//懒汉式加入同步为了解决多线程安全问题。加入双重判断是为了解决效转载 2018-01-08 22:05:29 · 175 阅读 · 0 评论 -
多线程--验证静态同步函数的锁是该函数所属字节码文件对象
/*静态的同步函数使用的锁是 该函数所属字节码文件对象 可以用 getClass方法获取,也可以用当前 类名.class 表示。*/class Ticket implements Runnable{ private static int num = 100;// Object obj = new Object(); boolean flag = true; publi转载 2018-01-08 22:03:43 · 616 阅读 · 0 评论 -
多线程-验证同步函数的锁是this
/*同步函数的使用的锁是this;同步函数和同步代码块的区别:同步函数的锁是固定的this。同步代码块的锁是任意的对象。建议使用同步代码块。*/class Ticket implements Runnable{ private int num = 100;// Object obj = new Object(); boolean flag = true; pub转载 2018-01-08 22:01:39 · 293 阅读 · 0 评论 -
多线程实例-卖票代码
/*需求:卖票。*//*线程安全问题产生的原因:1,多个线程在操作共享的数据。2,操作共享数据的线程代码有多条。当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算。就会导致线程安全问题的产生。 解决思路;就是将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候,其他线程时不可以参与运算的。必须要当前线程把这些代码都执行完毕转载 2018-01-08 21:59:39 · 1303 阅读 · 0 评论 -
什么是多线程?
什么是线程、什么是进程?进程是电脑运行的一个软件程序,如下windows任务管理器里面。每个进程都至少有一个线程运行。多线程:一个进程运行时产生了多个线程。并行:多个CPU实例或多台机器同时执行一段处理逻辑,是真正的同时。并发:通过CPU调度算法,让用户看上去同时执行,实际上CPU操作层面不是真正的同时。并发时如果操作了公用资源,可能产生线程安全问题。线程安全:原创 2018-01-08 21:57:09 · 5992 阅读 · 1 评论 -
ExecutorService生命周期
ExecutorService接口继承了Executor接口,定义了一些生命周期的方法Java代码 public interface ExecutorService extends Executor { void shutdown(); List shutdownNow(); boolean isShutdown(); boolean isTe转载 2018-01-09 10:49:49 · 169 阅读 · 0 评论