
多线程
ljh_learn_from_base
高楼平地起,须先根基坚!
展开
-
多线程之五种状态
当一个线程从sleep状态或是wait 状态 被唤醒(notify)后,不会立刻就回到运行状态,而是会回到阻塞状态,等待具备执行资格。原创 2017-08-09 01:01:04 · 566 阅读 · 0 评论 -
Java快速失败(fail-fast)和安全失败(fail-safe)区别
非线程安全的集合类都是快速失败的线程安全的集合类以及java.util.concurrent包下的集合类都是安全失败的 /*一、快速失败当在迭代一个集合的时候,如果集合中的元素大于等于3个,即使在同一线程,如果使用list.remove(ele)或list.add(ele)而不是使用迭代器的remove(),同样会抛出异常Exception in thread "main" java...原创 2018-09-17 21:45:53 · 283 阅读 · 0 评论 -
并发编程中涉及到的一些概念
1.竞争条件(Race Condition)多个线程并发访问和操作同一数据且执行结果与访问的特定顺序有关,竞争的失败者决定该数据的最终值,称为竞争条件2.内存模型原创 2017-08-13 15:04:40 · 287 阅读 · 0 评论 -
找出可能发生问题的地方
import java.util.ArrayList;import java.util.List;//请评论以下代码,找出可能发生问题的地方,以及你的解决方法public class Car { private List listeners = new ArrayList(); public void add(CarEventListener listener) { if (li原创 2017-08-12 13:27:13 · 349 阅读 · 0 评论 -
多线程面试题
1.创建线程有几种不同的方式?你喜欢哪一种?为什么?2.概括地解释一下线程的几种可用状态?3.同步方法和同步代码块的区别是什么?4.在监视器内部,是如何做线程同步的?程序应该做哪种级别的同步?监视器(锁)监视一块同步代码块,确保一次只有一个线程执行同步代码块。为了实现监视器的互斥功能,每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。原创 2017-08-10 00:47:46 · 501 阅读 · 0 评论 -
线程之间的通信--等待唤醒机制
/*线程间通讯:其实就是多个线程在操作同一个资源,但是操作的动作不同。*/class Res{ String name; String sex; boolean flag = false;}class Input implements Runnable{ private Res r ; Input(Res r) { this.r = r; } public原创 2017-08-09 22:24:33 · 271 阅读 · 0 评论 -
多线程之死锁02
class Test implements Runnable{ private boolean flag; Test(boolean flag) { this.flag = flag; } public void run() { if(flag) { while(true) { synchronized(MyLock.locka) {原创 2017-08-09 21:21:44 · 235 阅读 · 0 评论 -
多线程之死锁
/*死锁。同步中嵌套同步。你有一根筷子,我有一根筷子,我要吃饭,你不给我,我不给你,谁都吃不着饭,死锁发生,但是死锁不一会发生,也会存在和谐的状态,就是你把筷子给我,我吃一口,我再把筷子给你,你再吃一口*/class Ticket implements Runnable{ private int tick = 1000; Object obj = new Object();原创 2017-08-09 18:44:24 · 207 阅读 · 0 评论 -
多线程之静态同步函数/方法
/*如果同步函数被静态修饰后,使用的锁是什么呢?通过验证,发现不在是this。因为静态方法中也不可以定义this。静态进内存是,内存中没有本类对象,但是一定有该类对应的字节码文件对象。类名.class 该对象的类型是Class静态的同步方法,使用的锁是该方法所在类的字节码文件对象。 类名.class*/class Ticket implements Runnable{原创 2017-08-09 18:23:47 · 526 阅读 · 0 评论 -
多线程之懒汉式
/*单例设计模式。*///饿汉式。/*class Single{ private static final Single s = new Single(); private Single(){} public static Single getInstance() { return s; }}*///懒汉式class Single{ private原创 2017-08-09 18:02:37 · 455 阅读 · 0 评论 -
多线程之同步函数使用的是this锁
/*同步函数用的是哪一个锁呢?函数需要被对象调用。那么函数都有一个所属对象引用。就是this。所以同步函数使用的锁是this。通过该程序进行验证。使用两个线程来买票。一个线程在同步代码块中。一个线程在同步函数中。都在执行买票动作。如果在加上同步的情况下还出现0号票说明使用的两个线程使用的不是同一个锁*/class Ticket implements Runnable原创 2017-08-09 12:23:11 · 632 阅读 · 0 评论 -
多线程之多个窗口卖票02
/*通过分析,发现,打印出0,-1,-2等错票。多线程的运行出现了安全问题。问题的原因: 当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完, 另一个线程参与进来执行。导致共享数据的错误。解决办法: 对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程中,其他线程不可以参与执行。Java对于多线程的安全问题提供了专业的解决方式原创 2017-08-09 02:39:55 · 458 阅读 · 0 评论 -
多线程之多个窗口卖票01
/*需求:简单的卖票程序。多个窗口同时买票。创建线程的第二种方式:实现Runable接口步骤:1,定义类实现Runnable接口2,覆盖Runnable接口中的run方法。 将线程要运行的代码存放在该run方法中。3,通过Thread类建立线程对象。4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。 为什么要将Runnable接口的子类对象原创 2017-08-09 01:37:35 · 635 阅读 · 0 评论 -
模拟100用户并发访问数据库,结果测的MySQL并发访问数是大概是100,否则会抛出 too many connection 异常
编写数据库连接工具类package com.security.ljh.secutiryDemo;import java.sql.*;/** * 连接数据库 */public class MysqlUtils { private static final String URL="jdbc:mysql://localhost:3306/test"; static {...原创 2019-05-31 15:41:55 · 1333 阅读 · 0 评论