随机数&线程安全

线程&随机数

  • 随机数
    • 1、Math(数学类)
    • 2、Random类
    • 3、ThreadLocalRandom类
    • 4、UUID类
  • 线程
    • 1、同步线程
    • 2、锁机制(常用)

随机数

1、Math(数学类)

0.0~1.0 之间的随机数方法
random()   //static修饰 返回的是double类型

api:
	static double random() 
	          返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 

2、Random类

0~指定数之间随机(包含0,不包含指定数) 没有static修饰
   api:
	 int nextInt(int n) 
	          返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
	           
	 long nextLong() 
	          返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 
	         
	         

3、ThreadLocalRandom类

构造方法私有化了:
	static ThreadLocalRandom  current()  //static修饰的,返回是ThreadLocalRandom类型对象
											返回当前线程的 ThreadLocalRandom。  
api:
  两个数之间随机(含头不含尾)
	int nextInt(int origin, int bound) 
				返回一个指定的起点之间的伪随机 int值(含)与指定的绑定(独家)。  
	double nextDouble(double origin, double bound) 
			    返回一个指定的起点之间的伪随机 double值(含)和绑定(独家)。  

4、UUID类

static UUID randomUUID()   //生成随机的4组随机数
          获取类型 4(伪随机生成的)UUID 的静态工厂。 

线程

1、同步线程

1、同步代码块
	括号里面可以放对象(必须要全局修饰的),字节码文件,字符串(放到常量池里,所以是公共的一个)
		synchronized (同步监听对象) {
			可能引发线程安全问题的代码
		} 

2、同步方法
		加入关键字 synchronized 

2、锁机制(常用)

接口 Lock       java.util.concurrent.locks

ReentrantLock :它的一个常用实现类 (常用)
api:  (没有static修饰)
	void lock()    //关闭锁;这个方法没有返回值
          获取锁。 

	void unlock()   //开锁;没有方法没有返回值
	          试图释放此锁。 



你可能感兴趣的:(随机数&线程安全)