From 3d484fa7f4a2488cd963ebdeb9d8fd1ec681ad01 Mon Sep 17 00:00:00 2001 From: KyMAN <0kyman0@gmail.com> Date: Tue, 5 Mar 2024 00:31:18 +0100 Subject: [PATCH] feat: Tareas hechas. --- .../TareaProductorBufferConsumidor/build.xml | 73 + .../build/built-jar.properties | 4 + .../TareaProductorBufferConsumidor$1.class | Bin 0 -> 1823 bytes .../TareaProductorBufferConsumidor$2.class | Bin 0 -> 1663 bytes .../TareaProductorBufferConsumidor.class | Bin 0 -> 1082 bytes .../dist/README.TXT | 32 + .../dist/TareaProductorBufferConsumidor.jar | Bin 0 -> 5853 bytes .../manifest.mf | 3 + .../nbproject/build-impl.xml | 1771 +++++++++++++++++ .../nbproject/genfiles.properties | 8 + .../nbproject/private/private.properties | 2 + .../nbproject/private/private.xml | 9 + .../nbproject/project.properties | 95 + .../nbproject/project.xml | 15 + .../TareaProductorBufferConsumidor.java | 70 + Ejercicio_2/TareaCenaFilosofos/build.xml | 73 + .../build/built-jar.properties | 4 + .../build/classes/.netbeans_automatic_build | 0 .../build/classes/.netbeans_update_resources | 0 .../TareaCenaFilosofos$1.class | Bin 0 -> 2036 bytes .../TareaCenaFilosofos$2.class | Bin 0 -> 2246 bytes .../TareaCenaFilosofos.class | Bin 0 -> 2723 bytes .../TareaCenaFilosofos/dist/README.TXT | 32 + .../dist/TareaCenaFilosofos.jar | Bin 0 -> 7426 bytes Ejercicio_2/TareaCenaFilosofos/manifest.mf | 3 + .../nbproject/build-impl.xml | 1771 +++++++++++++++++ .../nbproject/genfiles.properties | 8 + .../nbproject/private/private.properties | 2 + .../nbproject/private/private.xml | 9 + .../nbproject/project.properties | 95 + .../TareaCenaFilosofos/nbproject/project.xml | 15 + .../TareaCenaFilosofos.java | 128 ++ README.md | 101 +- 33 files changed, 4322 insertions(+), 1 deletion(-) create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/build.xml create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/build/built-jar.properties create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/build/classes/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor$1.class create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/build/classes/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor$2.class create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/build/classes/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor.class create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/dist/README.TXT create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/dist/TareaProductorBufferConsumidor.jar create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/manifest.mf create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/nbproject/build-impl.xml create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/nbproject/genfiles.properties create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.properties create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.xml create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.properties create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.xml create mode 100644 Ejercicio_1/TareaProductorBufferConsumidor/src/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor.java create mode 100644 Ejercicio_2/TareaCenaFilosofos/build.xml create mode 100644 Ejercicio_2/TareaCenaFilosofos/build/built-jar.properties create mode 100644 Ejercicio_2/TareaCenaFilosofos/build/classes/.netbeans_automatic_build create mode 100644 Ejercicio_2/TareaCenaFilosofos/build/classes/.netbeans_update_resources create mode 100644 Ejercicio_2/TareaCenaFilosofos/build/classes/tareacenafilosofos/TareaCenaFilosofos$1.class create mode 100644 Ejercicio_2/TareaCenaFilosofos/build/classes/tareacenafilosofos/TareaCenaFilosofos$2.class create mode 100644 Ejercicio_2/TareaCenaFilosofos/build/classes/tareacenafilosofos/TareaCenaFilosofos.class create mode 100644 Ejercicio_2/TareaCenaFilosofos/dist/README.TXT create mode 100644 Ejercicio_2/TareaCenaFilosofos/dist/TareaCenaFilosofos.jar create mode 100644 Ejercicio_2/TareaCenaFilosofos/manifest.mf create mode 100644 Ejercicio_2/TareaCenaFilosofos/nbproject/build-impl.xml create mode 100644 Ejercicio_2/TareaCenaFilosofos/nbproject/genfiles.properties create mode 100644 Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.properties create mode 100644 Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.xml create mode 100644 Ejercicio_2/TareaCenaFilosofos/nbproject/project.properties create mode 100644 Ejercicio_2/TareaCenaFilosofos/nbproject/project.xml create mode 100644 Ejercicio_2/TareaCenaFilosofos/src/tareacenafilosofos/TareaCenaFilosofos.java diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/build.xml b/Ejercicio_1/TareaProductorBufferConsumidor/build.xml new file mode 100644 index 0000000..821908b --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project TareaProductorBufferConsumidor. + + + diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/build/built-jar.properties b/Ejercicio_1/TareaProductorBufferConsumidor/build/built-jar.properties new file mode 100644 index 0000000..895cef4 --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/build/built-jar.properties @@ -0,0 +1,4 @@ +#Mon, 04 Mar 2024 23:36:01 +0100 + + +/home/DAM2024/PSP02_Tarea/Ejercicio_1/TareaProductorBufferConsumidor= diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/build/classes/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor$1.class b/Ejercicio_1/TareaProductorBufferConsumidor/build/classes/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor$1.class new file mode 100644 index 0000000000000000000000000000000000000000..d16d10d4ff781ec83207415ad052a21d56cb62d8 GIT binary patch literal 1823 zcmbtVTW=dh7(HXBS!cT?#=WN{U8tMbO|dBjTIya%+=Qe!X{cQXS}q!|r^zPk9cy4#CrZOfqC(B{>?c`i0rpPLy>74R0{^* ziWa;>;2268T$y2N2!tUoG;ta48n|NNJ-pvnYkyi&tE*q)`C61AG@3c8uabdl47XpY zO7fQtTxZC=sL%V6@AH;N$1zfsZJNewt}j-iPD=!h#E`2=hkH#Pxca%bIifaPI)~ZX zE8?k;;6X&hGY${9qeMXP4oX1w{>@-GQdivBTISsz7PBs+z!3|srg8q|_oSq$6U%wu z@nlH%U|FaQ*|xBRyQD#fyM*OL;n6_|#U_DR5usX?Ar(k=PD&Nho$DqU!tqh8n7D^k z1E1;=xzCV)p|k66%Pmn(sxT?(1)?hhx*^{Vo_WtPNxDe4*%M*DCgoPt9a7-~F!u#E zcDiDS`yj2PGgSslwwI#HJ+JO6QOTgekYX$Y;y&?!+JO5FZ%bQvcK@{OX*ONT;4_9R z^Pb&5qrj$v?703PPwgFdD0OB~2xE&09(svZwR5gK^JaN&Sx!?ZB)CBx*) zU8&b3!okK>x?=h%FMMr{U8;U+dl2B<&4@BjD3eYGrJhij{k_t6CB^g>F=NYO^fs{&i#(;^30_@oCnBtnpSTE zyLcxF_yI=xDaL+!_AA+D_V7V$({R$za7s8#<5_x|L=NY0hFa+q$Iw38Xu#G zyVTX1lv%^J$$N_YW-%9YUh5G^qe1?2MC1;6SxEn@KV8{>P)(68^R$=30%Ze6=$o*J lPvRXDHJXo6&Si?M$K!)|T*K#N(H-h4&HDEcU*Id8{vX1?2PXEpPfYICCi3H)evCrwQuDZAG{l5G9^#A)00B+z}5?$yv5Hqn0 zafZ|iU*$Q6yDxHc)fHiBhWNPc+WI;}_fWR78wu<-kTmfNOonTkE5Vye)_hA#RrQya zgtDaT`3<`!Rc;{=&$q=Bp}6=>%#hTISNRHeYm$LI39Rom(SsDZjf^oID214OZ9BPw zQhcpsdpe&)8v70OnmB+yhW$I}FvL9jPZ0v2PU2S_GH}?$Z}^>I?CIF<@LiWz9ZG4eC~LIzlx$bb`i-hk3y~mQk`{L=T-m|Cbr{pjHt{c% zeiBcfvY>q8oUpj!mKKWOb!4-}o?%Z}bE`hXn=JszvhP)E;$MGqT|I#4(q|JnkEK z5EM(9VPG@3w!13pA{TLp>SvNTO0~xDcW33a6eFWk)HaUr21-)a{bqhUsE(5@7Z=u= zVh8n3TJ7f8ZlcH?r)+DHPv9ZLvBJkUyhZ~jBbQSnFknUsxQPPo7$&}5eno}?b7Si;{=vvP_H1BZD*o@6|5Al_IM|CL^_S28dWT~r z5)E(Qgq6R+R?g!A-p`Rhl3tLE>kj zNmQZ|KY$;FxK74C#KcSe;Cp?~wePvd_OIVRegbIWxq%eY8ZsubSYRlO`4?Vyxi_l6 z9gKw?GAuM5&j}A1(v@moL+)Bq?^Fst)L<~QLQei?=?^12^yMHrIT6zKy&#%6LtoZ= z3V!z&ei_5<3wV3qfR3~Q4NHp4GQ(=6bIIm?7dF^xZ^RDDj)x)RqYeb<%kLuZ-5zcP1`+xgGSen zq%B@KigNk?PpYPbW>`EDLHI_fR;hyd+Vg~LyF3U)fGxW26n%sg40Yk;tt+ zktUyh2F=?Psgq@7vpZ9;Z*j^aniUKz;W5o-l7J_u&`L)YI}}lyKOqxi`elSeapi rPQG`B`|4N*#aMlNf{9UqTC9z z$oT<@lBZ0bB5M>&c^fR@kv)nc&71R(pO7CAiSs&4l}3-BB__Vz@2F9($| z$Ix9P-Zi>Sih)Q^q_6X8*S(dL<)*rNQr^42uP@SbS!+ag17F6zcjm<@)6SIqhT2wc!F0WVn+)O026+_eGaU-tjDc9c6T{EU965HAee}Yv| z$r21|u1<|M9Xpkq84>|DlNErQ7L5{Wi;R&Vo5_idO?TVlPGuUPsc6PIa(9dkd&?mA_NfkE zK#rw`!nA0sit}ibaAHGWH|Q2I-CZ`_HQ^wxZn;Sb*V=O^{Rs{2ZOLVy9uz=3I%Hf_ z(TPj>X4y`<#s>AZQ(Uj~)J?ma`^9oeZRi_RPC`T|*Dax~hzdmnD(FR@jD8iDaV2A| ze73aKrVx^_gi(r2V<}AkipaPo;pUONq_tPZpoDPNKkue2OJ7NFIm*WDIA1k0re(~g zHdYL0(eDV)*xcz$x?_s}>Bcg5&Ez_a%p6glAsXCCapILR-O*#N;ZVK3CSZRim`DgN zxO!|os&A%sQ5Ni!6Eh}FF^!h}_en%dowJ;#}JUV~pzy zrfUpUVo^egBvpcQZ@9-WV1A*;ZOuq%nbp!RNEafNxG$l9BB5p0$kDiv8>aQ$OD&o5 zu|SL2mLSXw@dzcTQF>H>Dr;}iT2a_LJ1UcCF3eVwoI zk=G~GDTPocf+{}G@LwasXu@fR(l+vnpcRAs8p8#Aj1JskR9hlvp|-}+Z5%g(QE$%6 z=?Ro#k>f`>k#UYvQTlHIU7>$rtb}$E;8=o5as#s&1-CKnwJ4b3yN*1gq+IZx_q^va z9mfeHPjD(9fsOIc#(!1;i2LXW+*g3WpMD?$2bjMFWGE^PtN!TNE4Wvy zs6pruU>ZiPj5-y^QJ;Z_e86Q`N}69Vv@vy&uU8QNlJFwf4eUVv5?6K* z+{Lj_#q)Rn2#tJ$6LmPd{)?af`WrM6AcMrk^UFKvAQ*NFFzkQv?$16R3W1Ga9fy9h zzKml;%Vu07`VHU;G5s15Qvh{6g*6kg#)xwQ%m)bELL~t{Wgc3U6XyileN2=SZIw&{ z11KH^5>tJIONUbk%zIRbaKC!{_^*RyfVjsmRDq_L;#q$KVN;v1WwlFWHlX;=0l`Tc$)Oj}haVp5PIGfcoqv5{*!^cIk5X6re z3PiwYc?0>u8w4J_Le(p%%kH^;) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/genfiles.properties b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/genfiles.properties new file mode 100644 index 0000000..a84f843 --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=abda8551 +build.xml.script.CRC32=3e1ca100 +build.xml.stylesheet.CRC32=f85dc8f2@1.110.0.48 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=abda8551 +nbproject/build-impl.xml.script.CRC32=cb2ad89a +nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.110.0.48 diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.properties b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.properties new file mode 100644 index 0000000..9b263d1 --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.properties @@ -0,0 +1,2 @@ +compile.on.save=true +user.properties.file=/home/kyman/snap/netbeans/93/build.properties diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.xml b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.xml new file mode 100644 index 0000000..bbb606c --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/private/private.xml @@ -0,0 +1,9 @@ + + + + + + file:/home/DAM2024/PSP02_Tarea/Ejercicio_1/TareaProductorBufferConsumidor/src/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor.java + + + diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.properties b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.properties new file mode 100644 index 0000000..af806c6 --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.properties @@ -0,0 +1,95 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processor.options= +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.modulepath=\ + ${run.modulepath} +debug.test.classpath=\ + ${run.test.classpath} +debug.test.modulepath=\ + ${run.test.modulepath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/TareaProductorBufferConsumidor.jar +dist.javadoc.dir=${dist.dir}/javadoc +dist.jlink.dir=${dist.dir}/jlink +dist.jlink.output=${dist.jlink.dir}/TareaProductorBufferConsumidor +excludes= +includes=** +jar.compress=false +javac.classpath= +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.external.vm=true +javac.modulepath= +javac.processormodulepath= +javac.processorpath=\ + ${javac.classpath} +javac.source=19 +javac.target=19 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.modulepath=\ + ${javac.modulepath} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.html5=false +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +# The jlink additional root modules to resolve +jlink.additionalmodules= +# The jlink additional command line parameters +jlink.additionalparam= +jlink.launcher=true +jlink.launcher.name=TareaProductorBufferConsumidor +main.class=tareaproductorbufferconsumidor.TareaProductorBufferConsumidor +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.modulepath=\ + ${javac.modulepath} +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +run.test.modulepath=\ + ${javac.test.modulepath} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.xml b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.xml new file mode 100644 index 0000000..8dc4a8d --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/nbproject/project.xml @@ -0,0 +1,15 @@ + + + org.netbeans.modules.java.j2seproject + + + TareaProductorBufferConsumidor + + + + + + + + + diff --git a/Ejercicio_1/TareaProductorBufferConsumidor/src/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor.java b/Ejercicio_1/TareaProductorBufferConsumidor/src/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor.java new file mode 100644 index 0000000..d9778c5 --- /dev/null +++ b/Ejercicio_1/TareaProductorBufferConsumidor/src/tareaproductorbufferconsumidor/TareaProductorBufferConsumidor.java @@ -0,0 +1,70 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template + */ +package tareaproductorbufferconsumidor; + +import java.util.ArrayList; + +/** + * + * @author kyman + */ +public class TareaProductorBufferConsumidor { + + // Configuración. + private static final int longitud_limite_producto = 15; + private static final int longitud_maxima_buffer = 6; + // Configuración. + + private static boolean trabajando = true; + private static final ArrayList buffer = new ArrayList<>(); + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + // TODO code application logic here + + new Thread(new Runnable(){ + @Override + public void run() { + + String producto = ""; + + while(trabajando && producto.length() < longitud_limite_producto) + if(!buffer.isEmpty()){ + + String caracter = buffer.remove(0); + + producto += caracter; + System.out.println("Utilizado el caracter '" + caracter + "'."); + + if(producto.length() == longitud_limite_producto) + trabajando = false; + + } + + System.out.println("El productor terminó su tarea con el producto '" + producto + "'."); + + } + }).start(); + + new Thread(new Runnable(){ + @Override + public void run() { + while(trabajando) + if(buffer.size() < longitud_maxima_buffer){ + + String caracter = String.valueOf((char)(65 + (int)(Math.random() * 26))); + + buffer.add(caracter); + System.out.println("Añadido el nuevo caracter '" + caracter + "'."); + + } + } + }).start(); + + } + +} diff --git a/Ejercicio_2/TareaCenaFilosofos/build.xml b/Ejercicio_2/TareaCenaFilosofos/build.xml new file mode 100644 index 0000000..7acab0f --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project TareaCenaFilosofos. + + + diff --git a/Ejercicio_2/TareaCenaFilosofos/build/built-jar.properties b/Ejercicio_2/TareaCenaFilosofos/build/built-jar.properties new file mode 100644 index 0000000..187208b --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/build/built-jar.properties @@ -0,0 +1,4 @@ +#Mon, 04 Mar 2024 23:47:48 +0100 + + +/home/DAM2024/PSP02_Tarea/Ejercicio_2/TareaCenaFilosofos= diff --git a/Ejercicio_2/TareaCenaFilosofos/build/classes/.netbeans_automatic_build b/Ejercicio_2/TareaCenaFilosofos/build/classes/.netbeans_automatic_build new file mode 100644 index 0000000..e69de29 diff --git a/Ejercicio_2/TareaCenaFilosofos/build/classes/.netbeans_update_resources b/Ejercicio_2/TareaCenaFilosofos/build/classes/.netbeans_update_resources new file mode 100644 index 0000000..e69de29 diff --git a/Ejercicio_2/TareaCenaFilosofos/build/classes/tareacenafilosofos/TareaCenaFilosofos$1.class b/Ejercicio_2/TareaCenaFilosofos/build/classes/tareacenafilosofos/TareaCenaFilosofos$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ff1eac703a19164eb41a61831f0f3160d02dfa16 GIT binary patch literal 2036 zcma)7-ES0C6#w1rwzF*qTBekOK&?>v$#y}ZeiT92QmJkWvbE5H%H7%9cG}r{mzlc_ z^}z=d{{f>Bo{eeH#KdAsz{L3EgRjOH6W@IHS&eBtcV?R|X+zj_=JeeAyXW(F&-}9S z_(uTeu+)SE>MSH})T4o+b&)UgjL+qK=5k?CxSFBij3+&PmZ7e%f7(KdVNV3AXwT2& zT`r{v8qtJi3$~42*!_f+{7R@ri6P-hhW1=^(o>mnS+3~34g@caG{Hiv@xO;*f8UOf z{^>@vVXuXD8~f0~a7=SL>k7%|JYR)sPKB8%vy`Q!vCSohCLQnsU*xi=7}%_Fb->1R zILMHa;*QRFQZVf8>yO<=iBnjfoTso3qtn9kHoEY_lQ~5IvarCzg{&%)1**+>3P%}| z;*O`y(PK7x&`aeLw=3KaDfwz@HN_q2pG~2kq28q&L<)lhcSR8JAcZv9*CHr+(r6iS zQCK0!Nd~JZw4kD=@DfAg907dqLjyWZ?nAB0rW-HYcm=Q0DOI5!ZWaCt<+fRPhbS;& z;|yMB=qT|ekyX;=`kJRHD;a7oHO1Xi8+WxfJC^Gl-mq}q#sy><+BQ2~s3*kL8dsN>i7Z}Gkg=v1Pt>RUJGNhiAyX%YmW$GG zjrctw^nxndn87R+ti;Xz+}C%b#`XOxCB!x&xD1U)pMNxMY5=49Ru(-a-=a#&~CyUX7^D?roaY&fHkv*#)oLht--m+4h^nj|IEbCtnK(@VmO&z z$DwcN>`(NhzWx65UrEkC`r^}%NiKtZ^cTrbka^TeavZ}c6XJvVum1R(?ewU9LG&9pNRsrh=NPNbdVkviI7)U#=4C{j;b zM$M$16Or1JGHO@ac`;HuS|fC8+Bp^JRx82VlV6i}U^se%roSoPQ=Ym9a8}W>hT-Fn z@fxs>v#T3_niAJhl0auI-nbrnwSvX98Y%BlY0%<7ljPE(PN<3#D4S< zMx^d=xtd?7tqDspbe^-NtPLhEL zJmGVnAvHdmTk4~w;~f;Ge(Gtwg|`iyG4T%GWjMAc%ZqkXTqEun%(+szT&m0z7v?Wk z7>4%Vm2G`W=zV-(;6oE<@e#S*6Mbh7qn+5CvTlX8FBpc$FTVs{CzHT&?d4+==k>lD zzHkH&gn>`C{Y4Cyq!PX#dP>x1zO{s>Y*%WMrcD%aks&R#)FLUvU^}ln+J#)zz$`=G z^UAs!O37;u#X34(dTE8`s* z{E7#vK-D@YRKu-b;XZE)N}0^l6?;{36>3hCen<&s+v;X7VhCqnMR99=j(e?8hFyPk zQVLZQTn3XBH}ox078}BulG0UN(@C!S+kh7~h;X|u2<&K^xDtAvFM{AY_a)VQK+C!d zgqju6^wj2QIwN$-=yX#(#Ez)Z(DI=d8_%TP3o@LM7PSe2i?cVej4v6wEjp3@&F#*m z>%XKop=(|Q>XI9fgWhS^RRNuUFSZQ2@C|jF87I4Kl^tVaS-|Q?`&I+u+TbFCwM-|6*BglawQ@o=&V}u!@EOTQ`n1hLPtrX3GtCUF72q5%-c= zZYkH_Wca1MP+N*|9+xOiM+75f*If_2LOcI)t7(($GF;sB#2)Ic;%@7wh4%i{f+%vw zsn|+yxml7@_(g{Yfd~vx(;R&vr@cZoKs`9_6OprB!L_oYRvzbtEZrL2bc$z?=!G9w9k#>JictzhmEnNU=m?C&2(5muWPk?;d=H zGX2fbn@+&c$n?(BZvwiDF3_0J=qyKZXn%Jf;=n!p@DPV4enavpjscHxqHpX8#<$RU zAL~0Sr=k_oN+-|s?*}`Ug~)Q>HsoN8@fhb~Q~J37 z?Dl&U}F0ZqzSq5=;$aEq)0 zT2(ZL_#PXCahp&!aR=YwXOd{X4w9EUL_rZ(BIfS4nERa8x{=0E_i*Q6|FnS%DO@F) zrmaHrB57Y+1`AL{2dzp F{4Yw{QWgLJ literal 0 HcmV?d00001 diff --git a/Ejercicio_2/TareaCenaFilosofos/build/classes/tareacenafilosofos/TareaCenaFilosofos.class b/Ejercicio_2/TareaCenaFilosofos/build/classes/tareacenafilosofos/TareaCenaFilosofos.class new file mode 100644 index 0000000000000000000000000000000000000000..0f09593899d0cd53677fe4b84d366a3b000c193c GIT binary patch literal 2723 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 literal 0 HcmV?d00001 diff --git a/Ejercicio_2/TareaCenaFilosofos/manifest.mf b/Ejercicio_2/TareaCenaFilosofos/manifest.mf new file mode 100644 index 0000000..328e8e5 --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/Ejercicio_2/TareaCenaFilosofos/nbproject/build-impl.xml b/Ejercicio_2/TareaCenaFilosofos/nbproject/build-impl.xml new file mode 100644 index 0000000..70dc754 --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/nbproject/build-impl.xml @@ -0,0 +1,1771 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ejercicio_2/TareaCenaFilosofos/nbproject/genfiles.properties b/Ejercicio_2/TareaCenaFilosofos/nbproject/genfiles.properties new file mode 100644 index 0000000..bfa0363 --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=65753281 +build.xml.script.CRC32=a47445f8 +build.xml.stylesheet.CRC32=f85dc8f2@1.110.0.48 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=65753281 +nbproject/build-impl.xml.script.CRC32=8cf7ad61 +nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.110.0.48 diff --git a/Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.properties b/Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.properties new file mode 100644 index 0000000..9b263d1 --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.properties @@ -0,0 +1,2 @@ +compile.on.save=true +user.properties.file=/home/kyman/snap/netbeans/93/build.properties diff --git a/Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.xml b/Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.xml new file mode 100644 index 0000000..ef55b9b --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/nbproject/private/private.xml @@ -0,0 +1,9 @@ + + + + + + file:/home/DAM2024/PSP02_Tarea/Ejercicio_2/TareaCenaFilosofos/src/tareacenafilosofos/TareaCenaFilosofos.java + + + diff --git a/Ejercicio_2/TareaCenaFilosofos/nbproject/project.properties b/Ejercicio_2/TareaCenaFilosofos/nbproject/project.properties new file mode 100644 index 0000000..37f9a78 --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/nbproject/project.properties @@ -0,0 +1,95 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processor.options= +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.modulepath=\ + ${run.modulepath} +debug.test.classpath=\ + ${run.test.classpath} +debug.test.modulepath=\ + ${run.test.modulepath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/TareaCenaFilosofos.jar +dist.javadoc.dir=${dist.dir}/javadoc +dist.jlink.dir=${dist.dir}/jlink +dist.jlink.output=${dist.jlink.dir}/TareaCenaFilosofos +excludes= +includes=** +jar.compress=false +javac.classpath= +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.external.vm=true +javac.modulepath= +javac.processormodulepath= +javac.processorpath=\ + ${javac.classpath} +javac.source=19 +javac.target=19 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.modulepath=\ + ${javac.modulepath} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.html5=false +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +# The jlink additional root modules to resolve +jlink.additionalmodules= +# The jlink additional command line parameters +jlink.additionalparam= +jlink.launcher=true +jlink.launcher.name=TareaCenaFilosofos +main.class=tareacenafilosofos.TareaCenaFilosofos +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.modulepath=\ + ${javac.modulepath} +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +run.test.modulepath=\ + ${javac.test.modulepath} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/Ejercicio_2/TareaCenaFilosofos/nbproject/project.xml b/Ejercicio_2/TareaCenaFilosofos/nbproject/project.xml new file mode 100644 index 0000000..fde18b4 --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/nbproject/project.xml @@ -0,0 +1,15 @@ + + + org.netbeans.modules.java.j2seproject + + + TareaCenaFilosofos + + + + + + + + + diff --git a/Ejercicio_2/TareaCenaFilosofos/src/tareacenafilosofos/TareaCenaFilosofos.java b/Ejercicio_2/TareaCenaFilosofos/src/tareacenafilosofos/TareaCenaFilosofos.java new file mode 100644 index 0000000..0c70d75 --- /dev/null +++ b/Ejercicio_2/TareaCenaFilosofos/src/tareacenafilosofos/TareaCenaFilosofos.java @@ -0,0 +1,128 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template + */ +package tareacenafilosofos; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Scanner; +import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; + +/** + * + * @author kyman + */ +public class TareaCenaFilosofos { + + // Configuración. + private static final int numero_de_filosofos = 5; + private static final int tiempo_minimo_de_espera = 10; // Milisegundos + private static final int tiempo_de_pensar = 10; // Segundos + private static final int tiempo_para_comer = 2; // Segundos + private static final int tiempo_limite_para_palillo = 100; // Milisegundos + // Configuración. + + private static boolean trabajando = true; + private static Semaphore[] palillos; + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + // TODO code application logic here + + palillos = new Semaphore[numero_de_filosofos]; + + new Thread(new Runnable(){ + @Override + public void run() { + + Scanner entrada = new Scanner(System.in); + String comando; + + while(trabajando && (comando = entrada.nextLine()) != null){ + switch(comando){ + case "exit", "close", "cerrar", "terminar", "bye", "detener", "finalizar", "stop" -> trabajando = false; + default -> System.out.println("Comando '" + comando + "' desconocido."); + } + } + + } + }).start(); + + for(int i = 0; i < numero_de_filosofos; i ++) + palillos[i] = new Semaphore(1); + for(int i = 0; i < numero_de_filosofos; i ++) + crear_filosofo(i); + + } + + public static void excepcion(Exception exception){ + System.out.println(exception.getMessage()); + System.out.println(Arrays.toString(exception.getStackTrace())); + } + + private static long coger_milisegundos(){ + return new Timestamp(System.currentTimeMillis()).getTime(); + } + + private static boolean esperar(float segundos){ + + boolean continua = true; + float espera = (float) (Math.random() * segundos * 1000); + long inicio = coger_milisegundos(); + + try { + do{ + if(trabajando) + Thread.sleep(tiempo_minimo_de_espera); + else{ + continua = false; + break; + } + }while(coger_milisegundos() - inicio < espera); + } catch (InterruptedException excepcion) { + TareaCenaFilosofos.excepcion(excepcion); + } + + return continua && trabajando; + } + + private static void crear_filosofo(int i){ + + Semaphore[] mis_palillos = {palillos[i], palillos[(i + 1) % numero_de_filosofos]}; + + new Thread(new Runnable() { + @Override + @SuppressWarnings("empty-statement") + public void run() { + try { + while(trabajando){ + + System.out.println("El filosofo '" + i + "' está pensando..."); + if(!esperar(tiempo_de_pensar))break; + + System.out.println("El filosofo '" + i + "' tiene hambre..."); + while( + !mis_palillos[0].tryAcquire(tiempo_limite_para_palillo, TimeUnit.MILLISECONDS) || + !mis_palillos[1].tryAcquire(tiempo_limite_para_palillo, TimeUnit.MILLISECONDS) + ) + if(!trabajando) + return; + + System.out.println("El filosofo '" + i + "' está comiendo..."); + if(!esperar(tiempo_para_comer))break; + mis_palillos[0].release(); + mis_palillos[1].release(); + + } + } catch (InterruptedException excepcion) { + TareaCenaFilosofos.excepcion(excepcion); + } + } + }).start(); + } + +} diff --git a/README.md b/README.md index 56c62b5..a514130 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,102 @@ # PSP02_Tarea -Ejercicios de producto-consumidor y la mesa de los filósofos con Semaphore. \ No newline at end of file +Ejercicios de producto-consumidor y la mesa de los filósofos con Semaphore. Dichos ejercicios están subidos a la siguiente URL Git: + +- https://git.k3y.pw/DAM2024/PSP02_Tarea + +## producto-consumidor + +Para este ejercicio se usó un simple String en vez de un vector o ArrayList de elementos para simplificar puesto que se hace uso de caracteres. + +Tanto el productos como el consumidor, pese a ser dos hilos distintos, ambos no son más que objetos anónimos de tipo Thread volcados sobre un Overwrite del "run" de un Runnable. El proceso es muy rápido por lo que al ejecutar no habrá opción a nada hasta que acabe de trabajar. En este caso, ambos comparten una variable de tipo String como entorno de Buffer para compartir esa memoria de caracteres donde el productor genera nuevos caracteres al final de la cadena y el consumidor irá consumiendo desde el principio de la misma siguiendo las normas del ejericio las cuales entendí como: + +- El productor no puede tener más de 6 caracteres en la cadena de memoria o Buffer compartido. +- El consumidor cogerá hasta 15 caracteres para generar un producto. + +Al tener esas dos limitaciones, el programa se detendrá automáticamente cuando el consumidor consiga los 15 caracteres y el productor tenga 6 caracteres en el Buffer. + +```mermaid +flowchart TD + +B[Buffer] +P[Productor] +C[Consumidor] +A{Añade} +K{Coge} + +P --> A +A -->|"Si Buffer < 6"| B +C --> K +K -->|"Si Buffer < 15 && \nConsumidor > 0"| B +``` + +La extracción de cada caracter se hace a partir de las letras inglesas mayúsculas de ASCII, es decir, a partir del caracter 65 hasta el 90, cogiendo un valor aleatorio entre 0 y 25. + +La **configuración** es la siguiente: + +- **longitud_limite_producto**: Determina la longitud máxima del producto. +- **longitud_maxima_buffer**: Determina la longitud máxima del Buffer. + +## Problema de los Filósofos + +Para este ejercicio, al no tener ningún objeto que cláramente requiera de datos específicos más que acciones comunes, se optó por hacer uso de objetos anónimos de tipo Thread contra objeto Runnable con el Override de su Run para establecer el proceso en cuestión. + +En este ejercicio entiendo que una mesa redonda de filósofos tienen 3 acciones a desarrollar en bucle a lo largo del tiempo de forma ininterrumpida, las cuales son: + +- **Pensar**: Acción que se simulará a partir de un Sleep con un tiempo aleatorio por cada ciclo. +- **Tener hambre**: Esta acción básicamente, a parte de ser un simple aviso al usuario confirme se cambia de estado a esperar a tener sus dos palillos disponibles, es el proceso de espera en la cual el filósofo espera su turno para poder hacer uso de sus palillos que dando simultáneamente, tanto el de su lado derecho como el de su lado izquierdo libres. Básicamente es un proceso de espera no controlado condicionado a tener sus palillos libres sin acaparar dichos palillos. +- **Comer**: Como la acción de pensar, en este caso sería una simulación a partir de un Sleep con un tiempo aleatorio por cada ciclo. + +> Aquí planteo que ambos palillos queden libres pues si se hace uso de uno que le quede libre y espera al siguiente, este proceso puede bloquear la aplicación entendiendo la casuística de que por azar, cada filósofo coja un palillo y éstos estén en la espera de que el siguiente deje de hacer uso de los mismos, bloqueando infinitamente la aplicación, además de la falta de control para poder cerrar la aplicación de forma correcta. + +Al ver que es un proceso infinito, para poder tener un control de detención de la aplicación se hará uso de la terminal donde si ponemos alguna de las claves "exit", "close", "cerrar", "terminar", "bye", "detener", "finalizar" o "stop", el programa detendrá todos los procesos y se finalizará independientemente del estado en el que se encuentre. Para poder llevar a cabo dicha acción, todo irá condicionado a una variable estática común llamada "trabajando" que determinará si está o no activa a modo de protocolo "Worker". + +> En caso de poner cualquier otro comando no contempleado en esta guía, el terminal imprimirá su desconocimiento. + +En este caso, los palillos serán los semáforos que regulan el consumo de procesos. Se entenderá que habrá un palillo por cada filósofo, y éstos los compartirán con sus vecinos inmediatos de mesa. + +Un filósofo será un método para que éste almacene sus propios valores en su ejecución independiente de los demás (Encapsulación). Cada Filósofo constará de un par de punteros a sus palillos correspondientes para agilizar el acceso a éstos. Una vez dentro del hilo de procesos del propio filósofo, éste estará pensando un tiempo aleatorio, seguido de solicitar los palillos (Tener hambre y hacer uso de los semáforos) mediante el método **tryAcquire** de *Semaphore* por el hecho de que nos permite obtener si hemos conseguido retener ambos palillos en un tiempo simbólico que impida que retener uno de los dos palillos indefinidamente. Una vez con los dos palillos, se hará un tiempo de espera aleatorio conforme está comiendo y se liberarán ambos palillos. Tras esto se volverá a repetir el proceso infinitamente. + +> Es cierto que los Filósofos pueden ser objetos, pero con objeto de simplificar en la medida de lo posible el/los Scripts de la tarea, y por la naturaleza y uso de los atributos que éstos llevarían, se obvió su creación como tal. Lo mismo puede ir aplicado a los palillos y al gestor de la terminal. + +Se ha creado una instrucción de gestión de tiempo equivalente al *Thread.sleep* llamada *esperar* con motivo de que si se quiere detener el programa, éste gestione el *sleep* de forma intermitente, permitiendo el cierre de la aplicación inmediatamente. + +> No se hizo uso de "wait" por el hecho de que éste habría de estar implementado en una clase-objeto, cosa que se deshechó anteriormente por la naturaleza de las acciones y valores a utilizar. + +```mermaid +flowchart TD + +P[Pensar] +H["Tener hambre"] +PI["Palillo izquierdo"] +PD["Palillo derecho"] +PA(["¿Ambos palillos libres?"]) +C[Comer] + +P --> H +H -..-|"Si mis palillos \nestán libres"| C +H -->|"¿Está libre?"| PI +H -->|"¿Está libre?"| PD +PI -->|Sí| PA +PD -->|Sí| PA +PI -->|No| PA +PD -->|No| PA +PA -->|Sí| C +PA -->|No| H +C -->|"Volver a empezar"| P + +``` + +La **configuración** del ejercicio es la siguiente: + +- **numero_de_filosofos**: Cantidad de filósofos que se procesarán. *Mínimo 2*. +- **tiempo_minimo_de_espera**: Tiempo mínimo de espera en milisegundos por los que se hará comprobación de que la aplicación sigue activa en el método "espera" equivalente a un "Thread.sleep". +- **tiempo_de_pensar**: Tiempo máximo en segundos dedicado a pensar. Éste valor es el que se usará para determinar un valor aleatorio de espera entre 0 y dicho número. +- **tiempo_para_comer**: Tiempo máximo en segundos dedicado para comer. Éste valor es el que se usará para determinar un valor aleatorio de espera entre 0 y dicho número. +- **tiempo_limite_para_palillo**: Tiempo límite en milisegundos en espera de que un palillo quede libre. + +## F.A.Q. + +> ¿Las aplicaciones pueden dar errores al alterar su configuración? + +Las aplicaciones no tienen un control de errores profundo por la falta de tiempo por lo que pueden saltar errores cara una mala configuración o cara valores no esperados. \ No newline at end of file