多线程编程
木村牧村
这个作者很懒,什么都没留下…
展开
-
synchronized对象锁的同步和异步问题
先上代码:public class MyObject { public synchronized void method1(){ try { System.out.println(Thread.currentThread().getName()); Thread.sleep(4000); } catch (Int原创 2016-11-03 00:17:11 · 6860 阅读 · 0 评论 -
CountDownLatch 阻塞队列使用
Latch:门闩的意思。根据该类名的意思,我们就可以知道该类在多线中扮演的就是一个倒数门闩的角色,怎么理解呢? 首先呢,我们新建一个CountDownLacth对象时我们需要给他传一个int参数,这个参数代表它将倒数的次数,也就是说调用几次countDown方法后,他就会对线程放行。 那放行是什么意思呢,就是某一个线程在执行的过程中如果遇到CountDownLatch对象的await方法时...转载 2018-08-25 15:11:30 · 836 阅读 · 0 评论 -
多线程集合Collections(Vector、Hashtable、ArrayList、LinkedList、HashMap )
在Collections类 中有多个静态方法,它们可以获取通过同步方法封装非同步集合而得到的集合: public static Collection synchronizedCollention(Collection c) public static List synchronizedList(list l) public static Map synchronizedMap原创 2016-11-04 00:16:33 · 425 阅读 · 0 评论 -
java 常见的单例模式,推荐静态内部类
解法一:只适合单线程环境(不好)package test;/** * @author xiaoping * */public class Singleton { private static Singleton instance=null; private Singleton(){ } public static Singleton getInstance(转载 2016-11-03 23:52:28 · 10742 阅读 · 0 评论 -
java.util.concurrent.atomic.AtomicInteger(Atomic详解)
先上一段自己写的代码:public class AtomicUse { private static AtomicInteger count = new AtomicInteger(0); //多个addAndGet在一个方法内是非原子性的,需要加synchronized进行修饰,保证4个addAndGet整体原子性 /**synchronized*/ public原创 2016-11-03 01:34:55 · 2006 阅读 · 0 评论 -
SimpleDateFormat 为什么不是线程安全的
Why?这是个坑,新手经常掉进去,比如我后面的妹子,如果不做压测或多线程实验根本不会看出来。跟一下 format 方法。private StringBuffer format(Date date, StringBuffer toAppendTo, FieldDelegate delegate) { // Convert input da原创 2016-11-03 01:03:11 · 505 阅读 · 0 评论 -
【转】SimpleDateFormat 时间处理错误等奇葩原因 非线程安全处理
类SimpleDateFonnat主要负责日期的转换与格式化,但在多线程的环境中,使用此类容易造成数据转换及处理的不准确,因为SimpleDateFormat类并不是线程安全的。1.出现异常 本示例将实现使用类SimpleDateFormat在多线程环境下处理日期但得出的结果却是错误的情况,这也是在多线程环境开发中容易遇到的间题。[java] view plain copy print?p转载 2016-11-03 00:53:23 · 5492 阅读 · 1 评论 -
【转载】Java多线程编程2--同步锁定--死锁
1、死锁实例 Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待根本不可能被释放的锁,从而导致所有的任务都无法继续完成。在多线程技术中,“死锁”是必须避免的,因为这会造成线程的“假死”。[java] view plain copy print?public class DeathThread implements Runnable { public String user转载 2016-11-03 00:47:08 · 369 阅读 · 0 评论 -
【转载】Java多线程编程2--同步锁定--synchronized同步方法、脏读、锁重入
线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。1、方法内的变量为线程安全 “非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题(这是方法内部的变量是私有的特性造成的,所得结果也就是“线程安全”的了。2、实例变量非线程安全 如果多个线程共同访问1个对象中的实例变量,则可能出现”非线程安全“问题。 如果对象仅有1个实例变量,转载 2016-11-03 00:41:17 · 428 阅读 · 0 评论 -
java 创建线程的3种方式
一、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。public class ThreadTest extends Thread{ int i =0; @Ove原创 2016-11-03 00:00:41 · 295 阅读 · 0 评论 -
Java【并发】面试题
Java【并发】面试题Java 线程简述线程、进程、程序的基本概念?程序程序,是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。转载 2019-06-19 14:32:34 · 2448 阅读 · 0 评论