java多线程学习
java线程、线程通信、高并发
乐亦在其中矣
Lè yì zài qízhōng yǐ
展开
-
java读写锁ReadWriteLock的使用
//可以同时读,读写排斥 写写排斥 ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(); ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock(); ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLoc...原创 2020-12-06 00:52:15 · 134 阅读 · 0 评论 -
java锁lock的使用
public void testLock(){ Lock lock=new ReentrantLock(); Condition condition = lock.newCondition(); if (lock.tryLock()){ try { }finally { lock.unlock(); } } try { if (lock.tryLock(1, TimeU原创 2020-12-04 18:39:50 · 321 阅读 · 0 评论 -
java原子操作类AtomicInteger
原子操作类,赋值操作要么成功,要么失败,没有中间态 public void testAtomic() { AtomicBoolean atomicBoolean = new AtomicBoolean(); AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(1); AtomicLong atomicLong = new AtomicLong(); AtomicR原创 2020-12-04 09:42:53 · 105 阅读 · 0 评论 -
java中Synchronized关键字加锁操作
java中每一个对象都有一个内部锁类实例对象锁(普通方法) synchronized void transfer(int[] accounts, int from, int to, int amount) { while (accounts[from] < amount) { try { wait(); } catch (InterruptedException exception) {原创 2020-09-22 23:30:28 · 407 阅读 · 1 评论 -
java中Lock加锁操作
加锁后必须解锁 Lock lock=new ReentrantLock(); lock.lock(); try { //do something } catch (Exception e) { //回滚try中的操作或者改成合适的状态值 e.printStackTrace(); }finally { lock.unlock(); .原创 2020-09-22 22:58:46 · 1971 阅读 · 0 评论 -
java线程属性
线程优先级,thread.setPriority(Thread.NORM_PRIORITY);守护线程 , thread.setDaemon(true);(守护线程的唯一用途就是为其他线程提供服务,当只剩下守护线程时,虚拟机就退出了)未捕获异常处理器,Thread.UncaughtExceptionHandler线程的run方法不能抛出任何受检查异常,但是非受检查异常会导致线程终止 thread.setUncaughtExceptionHandler(new Thread.UncaughtExc.原创 2020-09-16 01:34:20 · 71 阅读 · 0 评论 -
java线程的状态以及状态的切换方式
获取线程的状态 Thread.State state = thread.getState();线程的6中状态NEW 新创建线程 Thread thread=new Thread(runnable);RUNNABLE 可运行状态,thread.start();(可运状态的线程可能正在运行也可能没有运行(取决于操作系统给线程提供运行时间))BLOCKED 被阻塞,当一个线程试图获取一个内部的对象锁而该锁被其他线程持有,则该线程进去阻塞状态-WAITING 等待,当线程等待另外一个线程通知调度器.原创 2020-09-16 00:54:43 · 128 阅读 · 0 评论 -
java线程中断的方法
中断一个线程 Thread thread = new Thread(new Runnable() { @Override public void run() { int i = 0; for (int j = 0; j < 100; j++) { if (Thread.currentThread().isInterrupted()).原创 2020-09-15 23:24:45 · 105 阅读 · 0 评论 -
java创建新线程
java8创建并启动一个新线程启动新线程调用start方法,新线程执行的内容为run方法中的代码 public static void main(String[] args) { //使用lambda表达式创建一个Runnable对象 Runnable runnable=()->{ //打印当前线程名 System.out.println(Thread.currentThread().getName()+.原创 2020-09-15 22:21:02 · 148 阅读 · 0 评论