package syn;
public class SyncThreadEx03 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SyncThreadEx03 st = new SyncThreadEx03();
//关于这种实例化的方式吗,我也不太明白 句柄?
Product p = st.new Product();
Customer c = st.new Customer();
Thread tp = new Thread(p,"product:");
Thread tc = new Thread(c,"customer");
//设置一下优先级 便于观察生产与卖出的数据变化
//如果默认的话 有可能会重复出现1010101010。。。
tp.setPriority(10);
tc.setPriority(7);
tp.start();
tc.start();
}
Iphone_Store is =new Iphone_Store();
class Product implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
//for(int i =0 ; i<is.max_num;i++){
// is.product();
//}
while(true){
is.product();
}
}
}
class Customer implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
//for(int i = is.max_num ; i>is.min_num;i--){
// is.sale();
//}
while(true){
is.sale();
}
}
}
//表示 仓库
class Iphone_Store{
private int max_num = 10; //最大库存
private int min_num = 0; //最小库存
private int num=0; //现有量
//生产
public void product(){
synchronized(this){
try{
//当现有量 等于 最大库存的时候 生产线程等待,同时释放该仓库的锁
if(num == max_num){
this.wait();
//this.notify();
}
this.notify();
num++;
Thread.currentThread();
Thread.sleep(500);
System.out.println(Thread.currentThread().getName() +": Iphone: "+ num);
}catch(Exception e){
e.printStackTrace();
}
}
}
//卖出
public void sale(){
synchronized(this){
try{
if(num == min_num){
wait();
//this.notify();
}
notify();
num--;
Thread.currentThread();
Thread.sleep(500);
System.out.println(Thread.currentThread().getName()+": Iphone: "+num);
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
分享到:
相关推荐
java多线程同步互斥访问实例,对于初学者或是温故而知新的同道中人都是一个很好的学习资料
根据提供的信息,我们可以深入探讨Java线程同步以及代码示例中的关键知识点。 ### Java线程同步实例:哲学家就餐问题 #### 1. 哲学家就餐问题简介 哲学家就餐问题是多线程编程中一个经典的同步问题。该问题描述为...
在Java中,线程同步是保证多线程安全...上述Java线程同步例子中涉及到的代码虽然是片段,但涵盖了线程同步处理的多个重要方面,帮助我们理解和使用Java线程同步机制,以及在设计和实现多线程应用程序时的实践和技巧。
Java线程同步是一种控制多个线程访问共享资源的方式,确保数据的一致性和完整性。在这个例子中,我们将讨论如何使用`synchronized`关键字实现线程同步,以及它的工作原理。 首先,我们有两个类`ThreadDemo`和`...
Java线程同步是一种确保多个线程在访问共享资源时能够有序执行的技术,避免了数据的不一致性和竞态条件。在给定的示例中,通过两种方式展示了线程同步:synchronized方法和synchronized代码块。 首先,我们来看同步...
Java线程同步与通信是多线程编程中的关键概念,用于解决并发访问共享资源时可能出现的数据不一致性和竞态条件问题。以下将详细介绍这两个主题,以及如何通过代码示例进行演示。 1. **线程同步**: 线程同步是确保...
Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而...在"线程池.rar"和"线程实例"这两个文件中,你可以找到关于这些概念的具体示例代码,通过学习和实践,可以深入理解Java线程的运用和管理。
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...
线程同步确保了在同一时刻只有一个线程能够执行特定的代码段,从而避免了数据冲突。 ### 1. 同步方法 `synchronized`关键字可以用来修饰方法,如在描述中的例子所示。当一个方法被`synchronized`修饰时,意味着...
本文将详细解释Java线程同步的概念,并通过示例代码来说明其工作原理。 首先,我们需要理解Java中的两个主要同步机制:`synchronized`关键字和`wait()`, `notify()`, `notifyAll()`方法。`synchronized`关键字可以...
本文将深入探讨Java多线程中的关键知识点,包括创建线程、主线程、线程优先级、线程组、线程同步以及线程间的通信。 1. **创建线程** 在Java中,可以通过两种方式创建线程:继承`Thread`类或实现`Runnable`接口。...
Java多线程同步是编程中一个非常重要的概念,特别是在并发编程中,用于解决多个线程访问共享资源时可能引发的数据不一致问题。本实例通过一个简单的火车票售票系统来演示同步机制的应用。 在这个实例中,我们创建了...
以下是一个实现`Runnable`的例子: ```java public class MyRunnable implements Runnable { public void run() { // 这里编写线程执行的代码 } } // 创建线程并启动 Thread thread = new Thread(new ...
Java多线程同步是编程中一个非常重要的概念,特别是在并发编程和高并发系统设计中起到关键作用。在Java中,为了保证线程安全,避免数据竞争和不一致的状态,我们通常会使用同步机制来控制对共享资源的访问。本文将...
在Java编程中,线程同步和互斥是多线程编程中的重要概念,它们用于解决多个线程同时访问共享资源时可能出现的问题。本项目通过一个生产者消费者问题的实例,展示了如何在Java中实现线程间的同步与互斥。 生产者消费...
描述中的走廊相遇例子就是活锁的一个直观示例。 Java提供了多种同步机制来防止这些问题,如`synchronized`关键字用于锁定代码块或整个方法,保证同一时间只有一个线程可以执行;`wait()`和`notify()`/`notifyAll()`...