并发编程:Java多线程下的资源争抢示例
在Java中,多线程主要是通过Thread类或者Runnable接口来创建线程。由于资源有限,多个线程同时运行可能会引发资源争抢的问题。
以下是一个简单的Java多线程资源争抢示例:
// 创建资源对象
Object resource = new Object();
// 创建两个线程,每个线程尝试获取资源
Thread thread1 = new Thread(() -> {
try {
// 获取资源
resource = synchronized(resource) {
System.out.println("Thread 1 got resource at " + new Date());
return resource;
}
} catch (Exception e) {
e.printStackTrace();
}
}));
Thread thread2 = new Thread(() -> {
try {
// 获取资源
resource = synchronized(resource) {
System.out.println("Thread 2 got resource at " + new Date());
return resource;
}
} catch (Exception e) {
e.printStackTrace();
}
}));
// 启动线程
thread1.start();
thread2.start();
// 等待所有线程执行完毕
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
在这个示例中,我们创建了两个线程,每个线程都尝试获取一个共享的资源对象。由于资源有限,可能会引发线程间的资源争抢。
通过synchronized
关键字,我们可以确保在任何时候只有一个线程可以访问这个资源。
还没有评论,来说两句吧...