摘要:线程是程序执行中的最小单元,依赖进程存在。线程的同步可以理解为该线程在未返回结果之前你处于阻塞状态。
WHAT
线程是程序执行中的最小单元,依赖进程存在。线程的同步可以理解为该线程在未返回结果之前你处于阻塞状态。
WHY
在JAVA多线程并发中,当多个线程同时操作一个共享资源时,可能会发生资源数据的不准确,或者是数据的冲突,为了避免此类情况的发生,需要在一个线程操作该资源时,将该资源锁定,使得其他线程不可对此资源进行操作,以保证资源数据的准确性。
HOW
1.同步方法
使用synchronized关键字修饰的方法,如: public synchronized void save(){}
2.同步代码块
使用synchronized关键字修饰的语句块,如: synchronized(object){}
3.使用特殊域变量(volatile)
//需要同步的变量加上volatile private volatile int account = 100;
4.使用重入锁
class Bank { private int account = 100; //需要声明这个锁 private Lock lock = new ReentrantLock(); public int getAccount() { return account; } //这里不再需要synchronized public void save(int money) { lock.lock(); try{ account += money; }finally{ lock.unlock(); } } }
5.使用ThreadLocal
public class Bank{ //使用ThreadLocal类管理共享变量account private static ThreadLocalaccount = new ThreadLocal (){ @Override protected Integer initialValue(){ return 100; } }; public void save(int money){ account.set(account.get()+money); } public int getAccount(){ return account.get(); } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67693.html
同步 线程主要通过共享对字段和引用对象的引用字段的访问来进行通信,这种通信形式非常有效,但可能产生两种错误:线程干扰和内存一致性错误,防止这些错误所需的工具是同步。 但是,同步可能会引入线程竞争,当两个或多个线程同时尝试访问同一资源并导致Java运行时更慢地执行一个或多个线程,甚至暂停它们执行,饥饿和活锁是线程竞争的形式。 本节包括以下主题: 线程干扰描述了当多个线程访问共享数据时如何引入错误。...
摘要:多线程进程正在进行中的程序。所以容易出现线程安全问题。等待唤醒机制涉及的方法将同步中的线程处于冻结状态。返回该线程的字符串表示形式,包括线程名称优先级和线程组。暂停当前正在执行的线程对象,并执行其他线程。 多线程:进程:正在进行中的程序。其实进程就是一个应用程序运行时的内存分配空间。线程:其实就是进程中一个程序执行控制单元,一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应...
摘要:在两个线程访问同一个对象中的同步方法时一定是线程安全的。当一个线程访问的一个同步代码块时,其他线程对同一个钟所有其他同步代码块的访问被阻塞,这说明使用的对象监视器是一个。 非线程安全其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是脏读,也就是取到的数据其实是被更改过的。而线程安全就是以获得的实例变量的值是经过同步处理的,不会出现脏读的现象。 非线程安全问题存...
摘要:的主要功能和关键字一致,均是用于多线程的同步。而仅支持通过查询当前线程是否持有锁。由于和使用的是同一把可重入锁,所以线程可以进入方法,并再次获得锁,而不会被阻塞住。公平与非公平公平与非公平指的是线程获取锁的方式。 1.简介 可重入锁ReentrantLock自 JDK 1.5 被引入,功能上与synchronized关键字类似。所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻...
阅读 3921·2021-11-22 13:53
阅读 1622·2021-08-25 09:39
阅读 2374·2019-08-29 18:36
阅读 1435·2019-08-26 13:35
阅读 1177·2019-08-26 11:57
阅读 1648·2019-08-23 15:57
阅读 763·2019-08-23 14:55
阅读 1098·2019-08-23 14:51