线程的三大特性

本文介绍了Java线程的三大特性:原子性、可见性和有序性。原子性确保操作不被中断,如AtomicInteger的incrementAndGet()方法提供线程安全的自增操作。CAS(Compare and Swap)是实现原子性的手段,但存在ABA问题。可见性保证一个线程修改的变量值对其他线程可见,volatile关键字可以实现这一效果。有序性涉及指令重排序,可能影响多线程并发的正确性。
摘要由CSDN通过智能技术生成

线程的三大特性

原子性

即一个操作或多个操作要么全部执行并且执行过程中不被任何因素打断,要么就不执行。
在这里插入图片描述

package com.wdy.thread;

import java.util.concurrent.atomic.AtomicInteger;

public class ThreadAtomicDemo {
   
   
	public static int i=0;

	public static class AtomicThread extends Thread{
    //静态内部类继承Thread
		@Override
		public void run() {
   
			while(true) {
   
				i++;//i++,i--,++i,--i 不是原子性操作。
				//比如i++ 先赋值,后自增两个步骤,中间有间隔。这个两个步骤可能出现在两个线程中。因此结果中出现了两个连续重复的i
				//因此这样的操作是线程不安全的。
						
				System.out.println(this.getName()+"::"+i);
				try {
   
					sleep(200);
				} catch (InterruptedException e) {
   
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	public static void main(String[] args) {
   
		Thread t1=new AtomicThread();
		t1.setName("A");
		Thread t2=new AtomicThread(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值