. Java to ensure the correctness of concurrent execution1. Atomic Nature1) in Java, read and assign operations to variables of the base data type are atomic.2) Which of the following statements are atomic operationsx = 10; is atomic operationx = x + 1; Not: First read x value, plus 1, last assignmentx + +; Not: First read x value, plus 1, last assignmenty = x; Not: First read the x value, then assign the va
Latency function error: volatile and volatile
An inexplicable error. Latency caused by the use of javasick.
The initialization is like this:
// SysTick Configuration
SysTick_CLKSourceConfig (SysTick_CLKSource_HCLK_Div8 );
If (SysTick_Config (SystemCoreClock/1000) // enable clock interruption and configure Clock.
{
While (1 );
}
Then:
// Latency function. 1 nTime is equivalent to 1 ms.
Static uint32_t Timing
For a long time, there has been a lot of controversy about how to use the volatile correctly, even some experienced Java designers, the understanding of volatile and multithreaded programming is still mistaken. In fact, the use of volatile is very simple, as long as the understanding of the
the same variable in the two cache is inconsistent.For example:Two threads read the value of T respectively, assuming that the value of T is 0, and the value of T is stored in the respective cache, then thread 1 to the T to add 1 operation, the value of T is 1, and the value of T is written back to main memory. However, the value of the cache in thread 2 is still 0, after adding 1, the value of T is 1, and then the value of T is written back to main memory.At this point, there is a thread insec
, which is also a thread-safety problem.
Volatile, synchronized, and final implementations of visibility in Java.
Atomic nature:
Atoms are the smallest units in the world and are indivisible. such as a=0 (a not long and double type) This operation is indivisible, then we say this operation is atomic operation. Another example: a++; This operation is actually a = a + 1; it is divisible, so he is not an atomi
Synchronized synchronization block and volatile synchronization variable, synchronized lock variable
The Java language includes two internal synchronization mechanisms: Synchronous block (or method) and volatile variables. Both mechanisms are proposed to achieve code thread security. Among them, the synchronization of Volatil
The volatile keyword-Modified shared variable has two main features: 1. Memory visibility for different thread access 2. Prevent reordering
Before we talk about memory visibility and ordering, we need to look at the memory model of Java (note the distinction between the JVM memory model)
Why do you have a Java memory model?
First we know that memory access and
In the last two articles I have introduced some basic communication between the threads, then this article will talk about the volatile keyword related knowledge. This keyword is seldom used in our daily development, and the class under the lock and concurrent packages of the JDK uses this keyword extensively because it has the following two features:1. Ensure memory Visibility 2. Prohibit command reorderingThe next step is to analyze this two-point f
Java Theory and Practice: using Volatile variables correctlyOriginal: http://www.ibm.com/developerworks/cn/java/j-jtp06197.htmlSummarize:The lock provides two main features: Mutual exclusion (mutual exclusion) and visibility (visibility). Mutual exclusion allows only one thread to hold a particular lock at a time, so you can use this attribute to implement a coor
Reprint Please keep the following statementZhaozongSource: https://www.cnblogs.com/zhao-zongsheng/p/9092520.htmlRecently saw the definition of the volatile keyword in the C + + standard, found that the volatile keyword is completely different from Java, C + + volatile for concurrent programming basically does not help.
When studying concurrent programming, it involves the volatile,volatile and the JVM memory model, which is the knowledge of previous learning, and now some forget, as review and learn again. Because the research is shallow, fear of expression is not clear offended the principle, is not here to say volatile principle and JVM memory model, a better explanation
reorder occurs, another thread B that executes concurrently may have taken instance before the object operation has been initialized, but the object may not have been actually initialized by the thread, so this thread is unsafe. Java antecedent principle: 1. Rules of Procedure Order: in a thread, according to the Order of the program code (accurately said to be control flow order), first write first occurrence, after writing occurs. 2. Pipe lock rule
lock addl command is added.
This lock is actually a command prefix. It ensures that the Cache Line of the current operation is in the Exclusive State and ensures the order of the commands. This command may be implemented by locking the bus, but if the bus has been locked, it will only consume the Time of the suffix command.In fact, the volatile in Java is implemented by adding a lock add command. Write ag
decorate B with the volatile keyword, the miracle will appear.
Note: Here the B is volatile modified
volatile Boolean b = false;
This is how the process will beAfter adding the volatile keyword modifier to B, thread 1 modifies B, and then immediately updates the value in memory, thread 2 discovers that its copy h
Thread Basics Series (iv) Synchronization of threads 2: notify-wait communication mechanism for threads, and condition condition variablesThread Basics Series (iii) synchronization of Threads: synchronization control, locks and synchronizedThread Basics Series (ii) thread management: Thread state, control, hibernation, Interrupt,yield, etc.Thread Basics Series (a) thread creation and startup: Thread creation and startup, join (), daemon thread, callable task.The key words discussed in this artic
declared as volatile.
I'm afraid it's easiest to explain the difference between volatile and synchronized.Volatile is a variable modifier, while synchronized acts on a piece of code or method; Look at the following three-sentence get code: int i1;int Geti1 () {return i1;} volatile int i2;int Geti2 () {return i2;} int i3; synchronized int Geti3 () {return i3;}
This may be the best contrast to the volatile and synchronized effects of the article. Volatile is a variable modifier, and synchronized is a modifier of a method or a block. So we use both of these keywords to specify three simple ways to access variables.
int i1;
int Geti1 () {
return i1;
}
volatile int i2;
int Ge
In Java thread concurrency processing, there is a very big confusion about the use of a keyword volatile, for the use of this keyword, in the multi-threaded concurrent processing can be all right.The Java language is multi-threaded, in order to solve the problem of thread concurrency, the synchronization block synchronized and the
When it comes to volatile, some of the students who have attended the interview are certainly not unfamiliar with it.It is a frequent visitor to the interviewer's mouth, but the usual coding is seldom met (at least, I am).In recent interviews, I have often asked about volatile related issues such as the difference between volatile and sychronized ,
performance is better than synchronized. Volatile can only modify variables, synchronized may modify methods, code blocks volatile not block threads, synchronized block threads volatile ensure data visibility, not guarantee atomicity, Synchronized can guarantee atomicity and can indirectly guarantee visibility, which synchronizes data from public and private mem
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.