Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ejercicios;
- import es.urjc.etsii.code.concurrency.SimpleSemaphore;
- import static es.urjc.etsii.code.concurrency.SimpleConcurrent.*;
- public class Ejer2b15 {
- static volatile int currentNumProc = 0;
- static SimpleSemaphore proceed = new SimpleSemaphore(0);
- static SimpleSemaphore increment = new SimpleSemaphore(1);
- public static void A() {
- while(true) {
- print("A");
- increment.acquire();
- currentNumProc++;
- increment.release();
- if(currentNumProc == 3) {
- print("-");
- currentNumProc = 0;
- proceed.release(3);
- continue;
- }
- proceed.acquire();
- }
- }
- public static void B() {
- while(true) {
- print("B");
- increment.acquire();
- currentNumProc++;
- increment.release();
- if(currentNumProc == 3) {
- print("-");
- currentNumProc = 0;
- proceed.release(3);
- continue;
- }
- proceed.acquire();
- }
- }
- public static void C() {
- while(true) {
- print("C");
- increment.acquire();
- currentNumProc++;
- increment.release();
- if(currentNumProc == 3) {
- print("-");
- currentNumProc = 0;
- proceed.release(3);
- continue;
- }
- proceed.acquire();
- }
- }
- public static void D() {
- while(true) {
- print("D");
- increment.acquire();
- currentNumProc++;
- increment.release();
- if(currentNumProc == 3) {
- print("-");
- currentNumProc = 0;
- proceed.release(3);
- continue;
- }
- proceed.acquire();
- }
- }
- public static void main(String[] args){
- createThread("A");
- createThread("B");
- createThread("C");
- createThread("D");
- startThreadsAndWait();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement