线程安全与非线程安全

本文介绍了线程与进程的概念,详细阐述了在Java中如何实现多线程,以及非线程安全问题的产生和解决办法,如通过加锁和使用AtomicInteger确保原子性。同时,补充了原子性和事务的概念,事务的ACID特性也在文中得到解释,强调了原子性在事务中的基础作用、隔离性的重要性以及一致性和持久性的目标。
摘要由CSDN通过智能技术生成

本文总结于金现代信息分公司内训。

线程:

了解什么是线程,首先要了解什么是进程,进程就是一个正在操作系统中运行的程序,比如Word,chrome,资源管理器等。线程是进程中独立运行的子任务,线程是进程中最小的执行单位,一个进程可以有多个线程,至少有一个线程。

在java中实现多线程方法有两种,一种是继承thread类,覆盖run()方法;另一种是实现runnable接口。

产生非线程安全问题,可能的一种情况是,当线程A拿到count的值,还没有改变count的值的时候,结过线程B也来拿count的值,导致线程A与B拿到的count值是一样的。如下面代码:

public class MyThread1 {
    private static final int THREADS_COUNT = 20;
    private static int count = 0;

    private void add() {
        for (int i = 0; i < 1000; i++) {
            count++;
        }
    }

    public static void main(String[] args) throws InterruptedException {
        Thread[] threads = new Thread[THREADS_COUNT];//创建THREADS_COUNT个线程
        for (int i = 0; i < THREADS_COUNT; i++) {
            threads[i] = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值