started ex Z4
This commit is contained in:
		
							
								
								
									
										124
									
								
								.idea/uiDesigner.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								.idea/uiDesigner.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="Palette2"> | ||||
|     <group name="Swing"> | ||||
|       <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> | ||||
|       </item> | ||||
|       <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> | ||||
|         <initial-values> | ||||
|           <property name="text" value="Button" /> | ||||
|         </initial-values> | ||||
|       </item> | ||||
|       <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> | ||||
|         <initial-values> | ||||
|           <property name="text" value="RadioButton" /> | ||||
|         </initial-values> | ||||
|       </item> | ||||
|       <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> | ||||
|         <initial-values> | ||||
|           <property name="text" value="CheckBox" /> | ||||
|         </initial-values> | ||||
|       </item> | ||||
|       <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> | ||||
|         <initial-values> | ||||
|           <property name="text" value="Label" /> | ||||
|         </initial-values> | ||||
|       </item> | ||||
|       <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | ||||
|           <preferred-size width="150" height="-1" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | ||||
|           <preferred-size width="150" height="-1" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> | ||||
|           <preferred-size width="150" height="-1" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||||
|           <preferred-size width="150" height="50" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||||
|           <preferred-size width="150" height="50" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||||
|           <preferred-size width="150" height="50" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||||
|           <preferred-size width="150" height="50" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> | ||||
|           <preferred-size width="150" height="50" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> | ||||
|           <preferred-size width="150" height="50" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> | ||||
|           <preferred-size width="200" height="200" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> | ||||
|           <preferred-size width="200" height="200" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> | ||||
|           <preferred-size width="-1" height="20" /> | ||||
|         </default-constraints> | ||||
|       </item> | ||||
|       <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> | ||||
|       </item> | ||||
|       <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> | ||||
|         <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> | ||||
|       </item> | ||||
|     </group> | ||||
|   </component> | ||||
| </project> | ||||
							
								
								
									
										17
									
								
								src/exercises/ex_k_bis1/Customer.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/exercises/ex_k_bis1/Customer.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| package exercises.ex_k_bis1; | ||||
|  | ||||
| public class Customer implements Runnable { | ||||
|     /*private String name; | ||||
|     private ServiceDesk serviceDesk; | ||||
|  | ||||
|     public Customer(String name, ServiceDesk serviceDesk) { | ||||
|         this.name = name; | ||||
|         this.serviceDesk = serviceDesk; | ||||
|     } | ||||
|     */ | ||||
|  | ||||
|     @Override | ||||
|     public void run() { | ||||
|  | ||||
|     } | ||||
| } | ||||
							
								
								
									
										22
									
								
								src/exercises/ex_k_bis1/TestServiceDesk.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/exercises/ex_k_bis1/TestServiceDesk.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| package exercises.ex_k_bis1; | ||||
|  | ||||
| public class TestServiceDesk { | ||||
|     public static void main(String[] args) { | ||||
|         /* | ||||
|         ServiceDesk serviceDesk = new ServiceDesk(2); | ||||
|         for (int j = 0; j<3; j++) { | ||||
|             new Thread(new ServiceRepresentative(serviceDesk), "Employee-"+ j).start(); | ||||
|         } | ||||
|         // Start customer threads | ||||
|         for (int i = 0; i < 10; i++) { // 30 customers | ||||
|             String name = "Customer-" + i; | ||||
|             new Thread(new Customer(name, serviceDesk)).start(); | ||||
|             try { | ||||
|                 Thread.sleep((int) (Math.random() * 1000)); // Random arrival | ||||
|             } catch (InterruptedException e) { | ||||
|                 Thread.currentThread().interrupt(); | ||||
|             } | ||||
|         } | ||||
|         */ | ||||
|     } | ||||
| } | ||||
							
								
								
									
										75
									
								
								src/exercises/ex_n_bis/LibraryCatalog.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								src/exercises/ex_n_bis/LibraryCatalog.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| package exercises.ex_n_bis; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| import java.util.concurrent.locks.Lock; | ||||
| import java.util.concurrent.locks.ReentrantReadWriteLock; | ||||
|  | ||||
| public class LibraryCatalog { | ||||
|     private final Map<String, String> catalog = new HashMap<>(); | ||||
|     private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); | ||||
|     private final Lock readLock = lock.readLock(); | ||||
|     private final Lock writeLock = lock.writeLock(); | ||||
|  | ||||
|     public LibraryCatalog() { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public ArrayList<Book> getBooks() { | ||||
|         ArrayList<Book> books = new ArrayList<>(); | ||||
|         try { | ||||
|             readLock.lock(); | ||||
|             catalog.forEach((title, author) -> { | ||||
|                 books.add(new Book(title, author)); | ||||
|             }); | ||||
|         } finally { | ||||
|             readLock.unlock(); | ||||
|         } | ||||
|         return books; | ||||
|     } | ||||
|  | ||||
|     public String findBook(String title) { | ||||
|         String author; | ||||
|         try { | ||||
|             readLock.lock(); | ||||
|             author = catalog.get(title); | ||||
|         } finally { | ||||
|             readLock.unlock(); | ||||
|         } | ||||
|         if (author == null) { | ||||
|             System.out.println("The book '" + title + "' is not in the catalog"); | ||||
|             return null; | ||||
|         } | ||||
|         return author; | ||||
|     } | ||||
|  | ||||
|     public void addBook(String title, String author) { | ||||
|         try { | ||||
|             writeLock.lock(); | ||||
|             catalog.put(title, author); | ||||
|         } finally { | ||||
|             writeLock.unlock(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void removeBook(String title) { | ||||
|         try { | ||||
|             writeLock.lock(); | ||||
|             catalog.remove(title); | ||||
|         } finally { | ||||
|             writeLock.unlock(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void updateBook(String title, String newAuthor) { | ||||
|         try { | ||||
|             writeLock.lock(); | ||||
|             catalog.replace(title, newAuthor); | ||||
|         } finally { | ||||
|             writeLock.unlock(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public record Book(String title, String author) {} | ||||
| } | ||||
							
								
								
									
										19
									
								
								src/exercises/ex_w/Car.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/exercises/ex_w/Car.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| package exercises.ex_w; | ||||
|  | ||||
| public class Car { | ||||
|     private String name; | ||||
|     private String licensePlateNumber; | ||||
|     public Car(String name, String licensePlateNumber) { | ||||
|         this.name = name; | ||||
|         this.licensePlateNumber = licensePlateNumber; | ||||
|     } | ||||
|  | ||||
|     public String getLicensePlateNumber() { | ||||
|         return licensePlateNumber; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return name; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										18
									
								
								src/exercises/ex_w/Customer.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/exercises/ex_w/Customer.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| package exercises.ex_w; | ||||
|  | ||||
| public class Customer implements Runnable { | ||||
|     private final String name; | ||||
|     private final String licensePlateNumber; | ||||
|     private Car car; | ||||
|  | ||||
|     public Customer(String name, Car car) { | ||||
|         this.name = name; | ||||
|         this.car = car; | ||||
|         licensePlateNumber = car.getLicensePlateNumber(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void run() { | ||||
|  | ||||
|     } | ||||
| } | ||||
							
								
								
									
										33
									
								
								src/exercises/ex_w/Garage.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/exercises/ex_w/Garage.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| package exercises.ex_w; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.concurrent.Exchanger; | ||||
|  | ||||
| public class Garage implements Runnable { | ||||
|     private List<Car> courtesyCars = new ArrayList<>(); | ||||
|     private Exchanger<Car> receiveExchanger = new Exchanger<>(); | ||||
|  | ||||
|     public Garage() { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public Car leaveForRepair(Car car) throws InterruptedException { | ||||
|         return receiveExchanger.exchange(car); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void run() { | ||||
|         while (true) { | ||||
|             Car courtesyCar = courtesyCars.removeFirst(); | ||||
|             try { | ||||
|                 Car toRepair = receiveExchanger.exchange(courtesyCar); | ||||
|  | ||||
|  | ||||
|             } catch (InterruptedException e) { | ||||
|                 throw new RuntimeException(e); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										12
									
								
								src/exercises/ex_w/TestingExchanger_Garage.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/exercises/ex_w/TestingExchanger_Garage.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| package exercises.ex_w; | ||||
|  | ||||
| public class TestingExchanger_Garage { | ||||
|     String[] carTypes = {"Seat Alhambra", "BMW Mini", "Tesla 3"}; | ||||
|     public static void main(String[] args) { | ||||
|         // Create a Customer thread and a Garage thread | ||||
|         // that use an exchanger for replacing the customer car | ||||
|         // with a courtesy car during the reparation. At the end of the day, | ||||
|         // the cars are exchanged back. | ||||
|         Garage garage = new Garage(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										23
									
								
								src/exercises/ex_z4/AuctionMain.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/exercises/ex_z4/AuctionMain.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| package exercises.ex_z4; | ||||
|  | ||||
| import java.util.Random; | ||||
| import java.util.concurrent.ConcurrentLinkedQueue; | ||||
| import java.util.concurrent.Semaphore; | ||||
|  | ||||
| public class AuctionMain { | ||||
|     public static final String[] names = { | ||||
|         "Sabrina", "José", "Patrick", "Salomé", "Lisa", "Alfred", "Annna", "Alex", "Kevin" | ||||
|     }; | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         Semaphore mutex = new Semaphore(1); | ||||
|         ConcurrentLinkedQueue<Bid> bids = new ConcurrentLinkedQueue<>(); | ||||
|         Auctioneer auctioneer = new Auctioneer("Paul", bids, mutex); | ||||
|  | ||||
|         new Thread(auctioneer).start(); | ||||
|  | ||||
|         for (int i = 0; i < names.length; i++) { | ||||
|             new Thread(new Bidder(names[i])).start(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										81
									
								
								src/exercises/ex_z4/Auctioneer.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								src/exercises/ex_z4/Auctioneer.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| package exercises.ex_z4; | ||||
|  | ||||
| import java.util.concurrent.ConcurrentLinkedQueue; | ||||
| import java.util.concurrent.Semaphore; | ||||
|  | ||||
| public class Auctioneer implements Runnable { | ||||
|     private String name; | ||||
|     private ConcurrentLinkedQueue<Bid> bids; | ||||
|     private Semaphore mutex; | ||||
|     private Bid maximumBid; | ||||
|     private Thread countdownThread = null; | ||||
|  | ||||
|     public Auctioneer(String name, ConcurrentLinkedQueue<Bid> bids, Semaphore mutex) { | ||||
|         this.name = name; | ||||
|         this.bids = bids; | ||||
|         this.mutex = mutex; | ||||
|     } | ||||
|  | ||||
|     public void placeBid(Bid bid) { | ||||
|         bids.add(bid); | ||||
|         notify(); | ||||
|     } | ||||
|  | ||||
|     private void countdown() { | ||||
|         try { | ||||
|             Thread.sleep(1000); | ||||
|             System.out.println("Three"); | ||||
|             Thread.sleep(1000); | ||||
|             System.out.println("Two"); | ||||
|             Thread.sleep(1000); | ||||
|             System.out.println("One"); | ||||
|             Thread.sleep(1000); | ||||
|             System.out.println("End of the Auction !"); | ||||
|             notify(); | ||||
|         } catch (InterruptedException _) {} | ||||
|     } | ||||
|  | ||||
|     public void startCountdown() { | ||||
|         countdownThread = new Thread(this::countdown); | ||||
|         countdownThread.start(); | ||||
|     } | ||||
|  | ||||
|     public Bid getMaximumBid() { | ||||
|         return maximumBid; | ||||
|     } | ||||
|  | ||||
|     public void endAuction(){ | ||||
|         System.out.println("End of the auction ! "); | ||||
|         notifyAll(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void run() { | ||||
|         while (true) { | ||||
|             try { | ||||
|                 mutex.acquire(); | ||||
|                 Bid current_bid = bids.poll(); | ||||
|                 if (current_bid == null) { | ||||
|                     startCountdown(); | ||||
|                     wait(); | ||||
|                     if (bids.isEmpty()) { | ||||
|                         endAuction(); | ||||
|                     } | ||||
|                     continue; | ||||
|                 } | ||||
|                 if (!bids.isEmpty()) { | ||||
|                     if (current_bid.amount() > maximumBid.amount()) { | ||||
|                         maximumBid = current_bid; | ||||
|                         System.out.println("New bid : " + maximumBid.amount() + " by " + maximumBid.bidder()); | ||||
|                         mutex.release(); | ||||
|                         return; | ||||
|                     } | ||||
|                 } else { | ||||
|                     mutex.release(); | ||||
|                 } | ||||
|             } catch (InterruptedException e) { | ||||
|                 throw new RuntimeException(e); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/exercises/ex_z4/Bid.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/exercises/ex_z4/Bid.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| package exercises.ex_z4; | ||||
|  | ||||
| public record Bid(Bidder bidder, double amount) { | ||||
|  | ||||
| } | ||||
							
								
								
									
										44
									
								
								src/exercises/ex_z4/Bidder.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/exercises/ex_z4/Bidder.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| package exercises.ex_z4; | ||||
|  | ||||
| import java.util.Random; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| public class Bidder implements Runnable { | ||||
|     private static int nextId = 0; | ||||
|     private final String name; | ||||
|     private final int id; | ||||
|     private final List<Item> items = new ArrayList<>(); | ||||
|     private Double lastBid = null; | ||||
|  | ||||
|     public Bidder(String name) { | ||||
|         this.name = name; | ||||
|         this.id = nextId++; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void run() { | ||||
|         while(true){ | ||||
|             Random rand = new Random(); | ||||
|             double addon = rand.nextDouble(500); | ||||
|             lastBid += addon; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public String getName() { | ||||
|         return name; | ||||
|     } | ||||
|  | ||||
|     public int getId() { | ||||
|         return id; | ||||
|     } | ||||
|  | ||||
|     public Double getLastBid() { | ||||
|         return lastBid; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "(" + id + ") " + name; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/exercises/ex_z4/Item.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/exercises/ex_z4/Item.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| package exercises.ex_z4; | ||||
|  | ||||
| public record Item(String name) { | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user