JAVA 100道题(23)

本文介绍了如何在Java中创建一个简单的多线程程序,模拟多个线程同时访问共享资源的场景,使用`synchronized`关键字保证线程安全。同时提到了在实际编程中可能遇到的线程同步问题和Java提供的其他并发控制工具。
摘要由CSDN通过智能技术生成

23.创建一个简单的多线程程序,模拟多个线程同时访问共享资源的情况

 

java复制代码

public class SharedResource {
private int sharedValue = 0;
public synchronized void increment() {
sharedValue++;
System.out.println("Incremented value: " + sharedValue);
}
public synchronized void decrement() {
sharedValue--;
System.out.println("Decremented value: " + sharedValue);
}
public int getValue() {
return sharedValue;
}
}
class IncrementThread extends Thread {
private SharedResource sharedResource;
public IncrementThread(SharedResource sharedResource) {
this.sharedResource = sharedResource;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
sharedResource.increment();
try {
Thread.sleep(100); // Simulate some delay
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class DecrementThread extends Thread {
private SharedResource sharedResource;
public DecrementThread(SharedResource sharedResource) {
this.sharedResource = sharedResource;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
sharedResource.decrement();
try {
Thread.sleep(100); // Simulate some delay
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
SharedResource sharedResource = new SharedResource();
IncrementThread incrementThread = new IncrementThread(sharedResource);
DecrementThread decrementThread = new DecrementThread(sharedResource);
incrementThread.start();
decrementThread.start();
}
}

这个程序创建了一个SharedResource类,它有一个共享的整型变量sharedValueincrementdecrement方法用于增加和减少这个变量的值,并且这两个方法都被声明为synchronized,以确保同一时间只有一个线程能够访问这些方法。

然后,我们创建了两个线程类IncrementThreadDecrementThread,它们分别用于增加和减少sharedValue的值。

main方法中,我们创建了一个SharedResource对象,然后创建了两个线程并启动它们。这样,这两个线程就会同时访问并修改sharedValue的值。

注意,虽然这个示例程序使用了synchronized关键字来确保线程安全,但在实际的多线程编程中,可能还需要考虑其他更复杂的问题,如死锁、活锁、饥饿等问题。同时,Java也提供了其他的并发工具,如ReentrantLockSemaphoreCountDownLatch等,可以更加灵活地控制线程的行为。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值