Database System Concepts
Database System Concepts
7th Edition
ISBN: 9780078022159
Author: Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher: McGraw-Hill Education
expand_more
expand_more
format_list_bulleted
Bartleby Related Questions Icon
Related questions
bartleby
Concept explainers
Question
I'm trying to construct 2 methods to sort an array One method will sort an array in ascending order the other method will sort the array in the sending order. To try to implement concurrency of threading. Writen in java.
Transcribed Image Text:This Java code snippet is designed to demonstrate process synchronization using mutex locks or semaphores. The code features a class named `Question3_SortingArrays` that operates on a shared resource, which is a one-dimensional array referred to as a buffer. Two threads, Thread 1 and Thread 2, perform sorting operations on this buffer. Thread 1 sorts the buffer in ascending order, while Thread 2 sorts it in descending order.
### Code Explanation:
1. **Package Declaration**
- `package Threads_Synchronization;`
- This line declares the package to which this class belongs.
2. **Imports**
- `import java.util.Random;`
- `import java.util.concurrent.locks.Lock;`
- `import java.util.concurrent.locks.ReentrantLock;`
- These import statements import the necessary Java libraries for random number generation and lock mechanisms.
3. **Class Declaration**
- `public class Question3_SortingArrays {`
- The class `Question3_SortingArrays` encapsulates the logic for this synchronization task.
4. **Comments**
- Detailed comments describe the goal of using mutex locks or semaphores for synchronization.
- The comments explain the shared use of a buffer by two threads, each tasked with sorting in different orders.
5. **Shared Resources**
- `public static int BufferSize = 10;`
- Declares a static integer `BufferSize`, set to 10, indicating the size of the shared buffer.
- `public static int buffer[] = new int[BufferSize];`
- Declares and initializes an integer array `buffer` with the size defined by `BufferSize`.
6. **Additional Comment**
- Instructions to add further resources for `Ascending()` and `Descending()` functions as necessary for implementing the sorting logic.
This setup illustrates implementing synchronization mechanisms in concurrent programming, ensuring that multiple threads can safely and efficiently share resources.
Transcribed Image Text:Below is the transcribed text from the given image, designed to appear on an educational website:
---
### Function: `displayStatus()`
This function displays the content of the shared buffer and indicates which thread made the call. **Do not change this function.**
```java
public static void displayStatus() {
if (Thread.currentThread().getName().equals("ascending"))
System.out.println("Ascending successfully sorted the array");
else
System.out.println("Descending successfully sorted the array");
System.out.print(" the " + Thread.currentThread().getName() + " is displaying the content of the buffer: ");
for (int i = 0; i < BufferSize; i++) {
System.out.print(buffer[i] + " ");
}
System.out.println();
}
```
### Function: `Ascending()`
This function sorts the shared buffer in ascending order.
```java
public static void Ascending() {
try {
System.out.println("The Ascending is trying to sort the shared buffer");
// Sort the buffer in ascending order
// Call displayStatus after you sort and before releasing the lock
// Implement the Ascending functionality in the area below
}
```
---
Expert Solution
Check Markarrow_forward
Step 1
In this question we will write java code for ascending and descending order.
bartleby
Step by stepSolved in 3 steps
Knowledge Booster
Background pattern image
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Similar questions
- Refer to imagearrow_forwardDefine a class MyData that holds an instance variable x, a function to increment x by 5, and a getter to return the value of x. In a MyUtil class, define an aggregate relationship where MyUtil holds a MyData reference. MyUtil should extend Thread and provide an implementation for run that contains a for loop that iterates 100000 times calling the increment function of the myData reference. Define the main method in MyUtil that creates the instance of MyData. Define a data collection for storing MyUtil objects. In three separate for loops, (1) create and add five instances of MyUtil to the data collection previously defined. (2) Call the start function on each thread. (3) Ensure each thread completes before main completes. Print out the value of x from myData. In a brief comment, describe what is happening when you execute the program several times. Also in the comment, what keyword could be used where to prevent the issue seen?arrow_forward/** Iluustration of RecursiveTask*/import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.RecursiveTask; public class SumWithPool{ public static void main(String[] args) throws InterruptedException, ExecutionException { //get the number of avaialbe CPUs int nThreads = Runtime.getRuntime().availableProcessors(); System.out.println("Available CPUs: " + nThreads); //create an array of data int n = 10; //initital data size if(args.length > 0) // use the user given data size n = Integer.parseInt(args[0]); int[] numbers = new int[n]; for(int i = 0; i < numbers.length; i++) { numbers[i] = i; } ForkJoinPool forkJoinPool = new ForkJoinPool(nThreads); Sum s = new Sum(numbers,0,numbers.length); long startTime = System.currentTimeMillis(); //start timer Long result = forkJoinPool.invoke(s); long endTime =...arrow_forward
- In java if i have this pseudo code that tries to explain how a method will work using recursion how can i turn this into working java codearrow_forwardIs there a way to optimize the following multithreaded quick sort algorithm, in C? I am looking for suggestions to make it run faster. I am trying to get closer to the qsort function's time. I don't want anything too complicated, like thread pooling. Here is the code: #include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <pthread.h>#include <time.h>#define SORT_THRESHOLD 40typedef struct _sortParams {char** array;int left;int right;int* threadsLeft; // A counter to keep track of how many more threads are available to be created.pthread_mutex_t* mutex;} SortParams;static int maximumThreads; /* maximum # of threads to be used */static void insertSort(char** array, int left, int right) {int i, j;for (i = left + 1; i <= right; i++) {char* pivot = array[i];j = i - 1;while (j >= left && (strcmp(array[j], pivot) > 0)) {array[j + 1] = array[j];j--;}array[j + 1] = pivot;}}/*** This function uses a mutex to...arrow_forwardin java please.Create a method from the implementation perspective. Create a method where it takes in a linked chain of values and adds them in order to the front. method header:public void addToFront(ANode<T> first)arrow_forward
- In java pls! here is some starter code for this problem: public class ThreadingDivisors { public static void main(String[] args) { long start = System.currentTimeMillis(); int maxDivisors = 0; int answer = 0; for (int n=1; n<100000; n++) { int divisors = getNumDivisors(n); if (divisors > maxDivisors) { maxDivisors = divisors; answer = n; } } System.out.println(answer + " has the most divisors (" + maxDivisors + ")"); long end = System.currentTimeMillis(); System.out.println(end - start + " milliseconds"); } public static int getNumDivisors(int n) { int numDivisors = 0; for (int i=1; i<=n; i++) { if (n % i == 0) { numDivisors++; } } return numDivisors; } }arrow_forwardThis is some code in C for quicksort. The quicksort works correctly, but I am trying to implement multithreading. I am trying to run the recursive calls in parallel with a limit on how much threads can be running at one time (set by the global variable 'maximumThreads'). My logic is incorrect with managing how many threads can be ran at the same time. The part that I need you to look at is after the for loop in quick sort, where I have my logic for the mutex and the conditional variable. Right now when I run my code, the program runs without stopping. I would like help with correctly implementing this. #include <stdlib.h>#include <string.h>#include <pthread.h>#include <stdio.h>#define SORT_THRESHOLD 40typedef struct _sortParams {char** array;int left;int right;int* currentThreads;pthread_mutex_t* mutex;pthread_cond_t* cond_var} SortParams;static int maximumThreads; /* maximum # of threads to be used *//* This is an implementation of insert sort, which although...arrow_forwardcan you do this in Java, please? Thank youarrow_forward
- Write a Java program to implement a stack using an array. The program should have methods to push an element onto the stack, pop an element from the stack, and check if the stack is empty. Additionally, implement a method to return the size of the stack. Provide an explanation of the code and its time and space complexity.arrow_forwardCan you help me with this code because i don't know what to do with this code, this code has to be in C. question that I need help with:You need to use the pthread for matrix multiplication. Each threadfrom the threadpool should be responsible for computing only a partof the multiplication (partial product as shown in the above picture –all Ti(S) are called a partical product). Your main thread should splitthe matrices accordingly and create the partial data arrays that areneeded to compute each Ti. You must create a unique task with thedata and submit it to the job queue. You can compute the partialproducts concurrently as long as you have threads available in thethreadpool. You have to remove the task the from queue and submitto a thread in the threadpool. You should define the number ofthreads to be 5 and keep it dynamic so that we can test the samecode with a higher or lower number of threads as needed. When allthe partial products are computed all the threads in the...arrow_forwardPlease can you help me with the code that I have contributed, as I played a role in its development. Please ensure that only my code is utilized. This code should be written in C, and I have provided a portion of it below. Question that I need help with: You need to use the pthread for matrix multiplication. Each thread from the threadpool should be responsible for computing only a partof the multiplication (partial product as shown in the above picture –all Ti(S) are called a partical product). Your main thread should splitthe matrices accordingly and create the partial data arrays that areneeded to compute each Ti. You must create a unique task with thedata and submit it to the job queue. You can compute the partialproducts concurrently as long as you have threads available in thethreadpool. You have to remove the task the from queue and submitto a thread in the threadpool. You should define the number ofthreads to be 5 and keep it dynamic so that we can test the samecode with a...arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- Text book imageDatabase System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationText book imageStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONText book imageDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- Text book imageC How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONText book imageDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningText book imageProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education