Home > Java > javaTutorial > What are the conditions for using java synchronization?

What are the conditions for using java synchronization?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2023-04-19 21:16:05
forward
913 people have browsed it

1. In order to maintain correct visibility across threads, synchronized or volatile must be used.

2. Reading may be a variable that another thread eventually writes.

3. Write a variable that may be read by another thread.

Example

class SellTicket implements Runnable {
private int tickets = 10;
 
public void run() {
 
while (true) {
if (tickets > 0)
sell();
else
return;
}
 
}
 
public synchronized void sell() {
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + "卖出第" + tickets + "张票");
tickets--;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
 
}
}
}
 
public class TicketTest {
public static void main(String args[]) {
SellTicket t = new SellTicket();
 
new Thread(t, "窗口1").start();
new Thread(t, "窗口2").start();
new Thread(t, "窗口3").start();
 
System.out.println("主线程结束");
 
}
}
Copy after login

The above is the detailed content of What are the conditions for using java synchronization?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
Install JAVA
From 1970-01-01 08:00:00
0
0
0
Unable to install java
From 1970-01-01 08:00:00
0
0
0
Can java be used as the backend of the web?
From 1970-01-01 08:00:00
0
0
0
Is this in Java language?
From 1970-01-01 08:00:00
0
0
0
Help: JAVA encrypted data PHP decryption
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template