ઑબ્જેક્ટ ઓરિએન્ટેડ પ્રોગ્રામિંગ વિથ જાવા (4341602) - સમર 2023 સોલ્યુશન

ઑબ્જેક્ટ ઓરિએન્ટેડ પ્રોગ્રામિંગ વિથ જાવા (4341602) સમર 2023 પરીક્ષા માટે સોલ્યુશન ગાઇડ

પ્રશ્ન 1(અ) [3 ગુણ]

પ્રોસિજર-ઓરિએન્ટેડ પ્રોગ્રામિંગ (POP) અને ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ (OOP) વચ્ચે તફાવત કરો.

જવાબ:

ટેબલ:

પાસુંPOPOOP
ધ્યાનફંક્શન્સ/પ્રોસિજર્સઑબ્જેક્ટ્સ અને ક્લાસ્સિઝ
ડેટા સિક્યોરિટીઓછી સુરક્ષા, ગ્લોબલ ડેટાવધુ સુરક્ષા, ડેટા encapsulation
સમસ્યા ઉકેલટોપ-ડાઉન એપ્રોચબોટમ-અપ એપ્રોચ
કોડ પુનઃઉપયોગમર્યાદિતinheritance દ્વારા વધુ
ઉદાહરણોC, PascalJava, C++, Python
  • POP: પ્રોગ્રામ ફંક્શન્સમાં વિભાજિત, ડેટા ફંક્શન્સ વચ્ચે વહે છે
  • OOP: પ્રોગ્રામ ઑબ્જેક્ટ્સની આસપાસ ગોઠવાયેલું જેમાં ડેટા અને મેથડ્સ બંને હોય છે

મેમરી ટ્રીક: "POP ફંક્શન્સ, OOP ઑબ્જેક્ટ્સ"


પ્રશ્ન 1(બ) [4 ગુણ]

યોગ્ય ઉદાહરણ સાથે inheritance માં Super કીવર્ડ સમજાવો.

જવાબ:

Super કીવર્ડ નો ઉપયોગ child class માંથી parent class ના members ને access કરવા માટે થાય છે.

ટેબલ: Super કીવર્ડના ઉપયોગો

ઉપયોગહેતુઉદાહરણ
super()parent constructor ને કૉલ કરેsuper(name, age)
super.method()parent method ને કૉલ કરેsuper.display()
super.variableparent variable ને access કરેsuper.name

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Super Parent ને કૉલ કરે"


પ્રશ્ન 1(ક) [7 ગુણ]

વ્યાખ્યાયિત કરો: મેથડ ઓવરરાઇડિંગ. મેથડ ઓવરરાઇડિંગ માટેના નિયમોની યાદી બનાવો. એક જાવા પ્રોગ્રામ લખો જે મેથડ ઓવરરાઇડિંગને implement કરે છે.

જવાબ:

મેથડ ઓવરરાઇડિંગ: Child class પોતાની parent class ના method નું specific implementation આપે છે સમાન signature સાથે.

ટેબલ: મેથડ ઓવરરાઇડિંગના નિયમો

નિયમવર્ણન
સમાન નામમેથડનું નામ સમાન હોવું જોઈએ
સમાન parametersParameter list બરાબર મેચ થવી જોઈએ
IS-A સંબંધinheritance હોવું જરૂરી
Access modifiervisibility ઘટાડી શકાતી નથી
Return typeસમાન અથવા covariant હોવું જોઈએ

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Override સમાન Signature"


પ્રશ્ન 1(ક OR) [7 ગુણ]

વર્ણવો: ઇન્ટરફેસ. મલ્ટિપલ inheritance ને દર્શાવવા માટે interface નો ઉપયોગ કરીને જાવા પ્રોગ્રામ લખો.

જવાબ:

Interface: blueprint જેમાં abstract methods અને constants હોય છે. Classes interfaces ને implement કરીને multiple inheritance પ્રાપ્ત કરે છે.

ટેબલ: Interface ની વિશેષતાઓ

વિશેષતાવર્ણન
Abstract methodsકોઈ implementation નથી (Java 8 પહેલાં)
Constantsબધા variables public static final છે
Multiple inheritanceClass અનેક interfaces implement કરી શકે
Default methodsConcrete methods (Java 8+)

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Interface Multiple Implementation"


પ્રશ્ન 2(અ) [3 ગુણ]

ઉદાહરણ સાથે Java પ્રોગ્રામ સ્ટ્રક્ચર સમજાવો.

જવાબ:

Java પ્રોગ્રામ સ્ટ્રક્ચર માં package, imports, class declaration અને main method હોય છે.

આકૃતિ:

goat

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Package Import Class Main"


પ્રશ્ન 2(બ) [4 ગુણ]

યોગ્ય ઉદાહરણ સાથે static કીવર્ડ સમજાવો.

જવાબ:

Static કીવર્ડ class નું છે instance નું નહીં. memory એક વાર allocate થાય છે.

ટેબલ: Static ના ઉપયોગો

પ્રકારવર્ણનઉદાહરણ
Static variableબધા objects દ્વારા sharedstatic int count
Static methodobject વિના કૉલ થાયstatic void display()
Static blockmain પહેલાં execute થાયstatic

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Static Class દ્વારા Shared"


પ્રશ્ન 2(ક) [7 ગુણ]

વ્યાખ્યાયિત કરો: કન્સ્ટ્રક્ટર. તેના પ્રકારોની યાદી બનાવો. પેરામીટરાઇઝ્ડ અને કોપી કન્સ્ટ્રક્ટરને યોગ્ય ઉદાહરણ સાથે સમજાવો.

જવાબ:

કન્સ્ટ્રક્ટર: objects ને initialize કરવા માટેની special method, class જેવું જ નામ, કોઈ return type નથી.

ટેબલ: કન્સ્ટ્રક્ટરના પ્રકારો

પ્રકારવર્ણનઉદાહરણ
Defaultકોઈ parameters નથીStudent()
Parameterizedparameters સાથેStudent(String name)
Copyobject ની copy બનાવેStudent(Student s)

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Constructor Objects ને Initialize કરે"


પ્રશ્ન 2(અ OR) [3 ગુણ]

જાવામાં પ્રિમિટિવ ડેટા પ્રકારો અને યુઝર ડિફાઇન્ડ ડેટા પ્રકારો સમજાવો.

જવાબ:

પ્રિમિટિવ ડેટા ટાઇપ્સ: Java language દ્વારા આપવામાં આવેલા built-in types. યુઝર ડિફાઇન્ડ ટાઇપ્સ: programmer દ્વારા classes વાપરીને બનાવવામાં આવેલા custom types.

ટેબલ: ડેટા ટાઇપ્સ

કેટેગરીપ્રકારોસાઇઝઉદાહરણ
Primitivebyte, short, int, long1,2,4,8 bytesint x = 10;
Primitivefloat, double4,8 bytesdouble d = 3.14;
Primitivechar, boolean2,1 byteschar c = 'A';
User DefinedClass, Interface, ArrayVariableStudent s;
  • Primitive: stack માં store થાય, ઝડપી access
  • User Defined: heap માં store થાય, જટિલ operations

મેમરી ટ્રીક: "Primitive Built-in, User Custom"


પ્રશ્ન 2(બ OR) [4 ગુણ]

યોગ્ય ઉદાહરણ સાથે this કીવર્ડ સમજાવો.

જવાબ:

This કીવર્ડ વર્તમાન object instance ને refer કરે છે, instance અને local variables વચ્ચે ભેદ પાડવા માટે વાપરાય છે.

ટેબલ: This કીવર્ડના ઉપયોગો

ઉપયોગહેતુઉદાહરણ
this.variableinstance variable ને access કરેthis.name = name;
this.method()instance method ને કૉલ કરેthis.display();
this()constructor ને કૉલ કરેthis(name, age);

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "This વર્તમાન Object"


પ્રશ્ન 2(ક OR) [7 ગુણ]

ઇનહેરિટન્સ વ્યાખ્યાયિત કરો. તેના પ્રકારોની યાદી બનાવો. multilevel અને hierarchical ઇનહેરિટન્સને યોગ્ય ઉદાહરણ સાથે સમજાવો.

જવાબ:

Inheritance: mechanism જેમાં child class parent class ના properties અને methods મેળવે છે.

ટેબલ: Inheritance ના પ્રકારો

પ્રકારવર્ણનસ્ટ્રક્ચર
Singleએક parent, એક childA → B
Multilevelinheritance ની chainA → B → C
Hierarchicalએક parent, અનેક childrenA → B, A → C
Multipleઅનેક parents (interfaces દ્વારા)B,C → A

આકૃતિ - Multilevel:

કોડ બ્લોક - Multilevel:

Java

આકૃતિ - Hierarchical:

કોડ બ્લોક - Hierarchical:

Java

મેમરી ટ્રીક: "Inheritance Properties શેર કરે"


પ્રશ્ન 3(અ) [3 ગુણ]

જાવામાં ટાઇપ કન્વર્ઝન અને કાસ્ટિંગ સમજાવો.

જવાબ:

Type Conversion: એક data type ને બીજામાં બદલવું. Casting: programmer દ્વારા explicit type conversion.

ટેબલ: Type Conversion

TypeDescriptionExample
Implicit (Widening)Automatic, smaller to largerint to double
Explicit (Narrowing)Manual, larger to smallerdouble to int

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Implicit Auto, Explicit Manual"


પ્રશ્ન 3(બ) [4 ગુણ]

Java માં ઉપયોગમાં લેવાતા વિવિધ visibility controls સમજાવો.

જવાબ:

Visibility Controls (Access Modifiers): classes, methods અને variables ના access ને control કરે છે.

ટેબલ: Access Modifiers

ModifierSame ClassSame PackageSubclassDifferent Package
private
default
protected
public

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Private Package Protected Public"


પ્રશ્ન 3(ક) [7 ગુણ]

વ્યાખ્યાયિત કરો: થ્રેડ. થ્રેડ બનાવવા માટે ઉપયોગમાં લેવાતી વિવિધ પદ્ધતિઓની સૂચિ બનાવો. થ્રેડની લાઇફ સાઇકલ વિગતવાર સમજાવો.

જવાબ:

Thread: lightweight subprocess જે program ના અનેક ભાગોને concurrent execution ની મંજૂરી આપે છે.

ટેબલ: Thread બનાવવાની પદ્ધતિઓ

પદ્ધતિવર્ણનઉદાહરણ
Thread વિસ્તરવુંThread class ને inherit કરવુંclass MyThread extends Thread
Runnable implement કરવુંRunnable interface implement કરવુંclass MyTask implements Runnable

આકૃતિ: Thread Life Cycle

ટેબલ: Thread States

સ્થિતિવર્ણન
NEWThread બન્યું પણ શરૂ નથી થયું
RUNNABLEચાલવા તૈયાર, CPU ની રાહમાં
RUNNINGહાલમાં execute થઈ રહ્યું છે
BLOCKEDresource અથવા sleep ની રાહમાં
TERMINATEDexecution પૂર્ણ થયું

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Thread Concurrent Execution"


પ્રશ્ન 3(અ OR) [3 ગુણ]

java માં JVM નો હેતુ સમજાવો.

જવાબ:

JVM (Java Virtual Machine): runtime environment જે Java bytecode execute કરે છે અને platform independence પ્રદાન કરે છે.

ટેબલ: JVM Components

Componentહેતુ
Class Loader.class files ને memory માં લોડ કરે
Execution Enginebytecode execute કરે
Memory Areaheap અને stack memory ને manage કરે
Garbage Collectorautomatic memory management

આકૃતિ:

goat
  • Platform Independence: "એકવાર લખો, દરેક જગ્યાએ ચલાવો"
  • Memory Management: automatic garbage collection
  • Security: Bytecode verification

મેમરી ટ્રીક: "JVM Java Virtual Machine"


પ્રશ્ન 3(બ OR) [4 ગુણ]

વ્યાખ્યાયિત કરો: પેકેજ. યોગ્ય ઉદાહરણ સાથે પેકેજ બનાવવા માટેના પગલાંઓ લખો.

જવાબ:

Package: સંબંધિત classes અને interfaces નો સંગ્રહ, namespace અને access control પ્રદાન કરે છે.

ટેબલ: Package ના ફાયદા

ફાયદોવર્ણન
Namespaceનામની ટકરાર ટાળે
Access Controlબહેતર encapsulation
Organizationlogical grouping
Reusabilitymaintain કરવું સરળ

Package બનાવવાના પગલાં:

  1. Package declare કરો file ની ટોચે
  2. Directory structure બનાવો package name મુજબ
  3. Compile કરો package structure સાથે
  4. Import કરો અન્ય classes માં

કોડ બ્લોક:

Java

Directory Structure:

com/
  company/
    utilities/
      Calculator.class
Main.class

મેમરી ટ્રીક: "Package Classes ને Group કરે"


પ્રશ્ન 3(ક OR) [7 ગુણ]

થ્રેડમાં Synchronization ને યોગ્ય ઉદાહરણ સાથે સમજાવો.

જવાબ:

Synchronization: shared resources ના access ને multiple threads દ્વારા control કરવાની mechanism, data inconsistency ટાળવા માટે.

ટેબલ: Synchronization ના પ્રકારો

પ્રકારવર્ણનઉપયોગ
Synchronized methodઆખી method lock થાયsynchronized void method()
Synchronized blockચોક્કસ code block lock થાયsynchronized(object)
Static synchronizationClass level lockingsynchronized static void method()

કોડ બ્લોક:

Java

મેમરી ટ્રીક: "Synchronization Race Conditions અટકાવે"


પ્રશ્ન 4(અ) [3 ગુણ]

સ્ટ્રિંગ ક્લાસ અને સ્ટ્રિંગબફર ક્લાસ વચ્ચે તફાવત કરો.

જવાબ:

ટેબલ: String vs StringBuffer

પાસુંStringStringBuffer
MutabilityImmutable (બદલાતું નથી)Mutable (બદલાય છે)
Performanceconcatenation માટે ધીમુંconcatenation માટે ઝડપું
Memoryદર વખતે નવું object બનાવેહાલનું object modify કરે
Thread SafetyThread safeThread safe
Methodsconcat(), substring()append(), insert(), delete()

કોડ બ્લોક:

Java
  • String: જ્યારે content વારંવાર બદલાતું નથી ત્યારે વાપરો
  • StringBuffer: જ્યારે વારંવાર modifications જરૂરી હોય ત્યારે વાપરો

મેમરી ટ્રીક: "String Immutable, StringBuffer Mutable"


પ્રશ્ન 4(બ) [4 ગુણ]

એરેની 10 સંખ્યાઓનો સરવાળો અને સરેરાશ મેળવવા માટે જાવા પ્રોગ્રામ લખો.

જવાબ:

કોડ બ્લોક:

Java

આઉટપુટ:

Array elements: 10 20 30 40 50 60 70 80 90 100
Sum: 550
Average: 55.0

લોજિક પગલાં:

  1. Initialize 10 numbers સાથે array
  2. Loop array માં સરવાળો calculate કરવા માટે
  3. Calculate સરેરાશ = સરવાળો / length
  4. Display પરિણામો

મેમરી ટ્રીક: "Loop Sum Divide Average"


પ્રશ્ન 4(ક) [7 ગુણ]

I) યોગ્ય ઉદાહરણ સાથે abstract class સમજાવો. II) યોગ્ય ઉદાહરણ સાથે final class સમજાવો.

જવાબ:

I) Abstract Class: class જેનું instantiation થઈ શકતું નથી, abstract methods હોય છે જેનું implementation subclasses માં જરૂરી છે.

ટેબલ: Abstract Class ની વિશેષતાઓ

વિશેષતાવર્ણન
Cannot instantiateobject બનાવી શકાતું નથી
Abstract methodsimplementation વિનાની methods
Concrete methodsimplementation સાથેની methods
InheritanceSubclasses માં abstract methods implement કરવા જરૂરી

કોડ બ્લોક - Abstract Class:

Java

II) Final Class: class જેનું extension થઈ શકતું નથી (inheritance નથી).

ટેબલ: Final Class ની વિશેષતાઓ

વિશેષતાવર્ણન
No inheritanceextend કરી શકાતું નથી
Securitymodification અટકાવે છે
Performanceબહેતર optimization
ઉદાહરણોString, Integer, System

કોડ બ્લોક - Final Class:

Java

મેમરી ટ્રીક: "Abstract અધૂરું, Final પૂરું"


પ્રશ્ન 4(અ OR) [3 ગુણ]

જાવામાં Garbage Collection સમજાવો.

જવાબ:

Garbage Collection: automatic memory management process જે heap memory માંથી unused objects ને remove કરે છે.

ટેબલ: GC ના ફાયદા

ફાયદોવર્ણન
Automaticmanual memory management નથી
Memory leak preventionunreferenced objects ને દૂર કરે
Performancememory usage optimize કરે
Safetymemory errors અટકાવે

આકૃતિ:

goat
  • ક્યારે થાય: જ્યારે heap memory ઓછી હોય અથવા System.gc() કૉલ થાય
  • Process: Mark and Sweep algorithm
  • Guarantee કરી શકાતું નથી: garbage collection નો exact timing

મેમરી ટ્રીક: "GC Automatic Memory Cleanup"


પ્રશ્ન 4(બ OR) [4 ગુણ]

'Divide by Zero' એરર માટે યુઝર ડિફાઇન્ડ એક્સેપ્શન હેન્ડલ કરવા માટે જાવા પ્રોગ્રામ લખો.

જવાબ:

કોડ બ્લોક:

Java

આઉટપુટ:

ભૂલ: શૂન્ય થી ભાગ નથી આપી શકાતો!

પગલાં:

  1. Custom exception class બનાવો Exception extend કરીને
  2. Exception throw કરો જ્યારે condition આવે
  3. Exception handle કરો try-catch block સાથે

મેમરી ટ્રીક: "Custom Exception Error Handle કરે"


પ્રશ્ન 4(ક OR) [7 ગુણ]

Multiple try block અને multiple catch block exception દર્શાવવા માટે જાવા પ્રોગ્રામ લખો.

જવાબ:

કોડ બ્લોક:

Java

આઉટપુટ:

Array index ભૂલ: Index 5 out of bounds for length 3
Null pointer ભૂલ: null
Arithmetic ભૂલ: / by zero
પ્રોગ્રામ પૂર્ણ થયું

દર્શાવેલી વિશેષતાઓ:

  • Multiple try blocks: દરેક અલગ operations handle કરે
  • Multiple catch blocks: દરેક specific exception type handle કરે
  • Exception hierarchy: સામાન્ય Exception બધાને catch કરે
  • Finally block: હંમેશા execute થાય

મેમરી ટ્રીક: "Multiple Try Multiple Catch"


પ્રશ્ન 5(અ) [3 ગુણ]

ફાઇલ બનાવવા અને આ ફાઇલ પર write operation કરવા માટે જાવામાં પ્રોગ્રામ લખો.

જવાબ:

કોડ બ્લોક:

Java

પગલાં:

  1. Import java.io package
  2. File object બનાવો filename સાથે
  3. FileWriter object બનાવો
  4. ડેટા લખો write() method વાપરીને
  5. Writer બંધ કરો changes save કરવા માટે

મેમરી ટ્રીક: "File Writer Write Close"


પ્રશ્ન 5(બ) [4 ગુણ]

Throw અને finally ને Exception Handling માં ઉદાહરણ સાથે સમજાવો.

જવાબ:

Throw: keyword જેનો ઉપયોગ explicitly exception throw કરવા માટે થાય. Finally: block જે exception આવે કે ન આવે હંમેશા execute થાય છે.

ટેબલ: Throw vs Finally

કીવર્ડહેતુઉપયોગ
throwExplicitly exception throw કરેthrow new Exception()
finallyહંમેશા cleanup code execute કરેfinally

કોડ બ્લોક:

Java

આઉટપુટ:

ભૂલ: ઉંમર 18 કે તેથી વધુ હોવી જોઈએ
Finally block હંમેશા execute થાય છે
  • Throw: Exception બળપૂર્વક બનાવે
  • Finally: Cleanup code, resources બંધ કરે

મેમરી ટ્રીક: "Throw Exception, Finally હંમેશા"


પ્રશ્ન 5(ક) [7 ગુણ]

વર્ણવો: પોલીમોર્ફિઝમ. જાવામાં યોગ્ય ઉદાહરણ સાથે રન ટાઇમ પોલીમોર્ફિઝમ સમજાવો.

જવાબ:

Polymorphism: એક interface, અનેક implementations. Object તેના actual type પર આધાર રાખીને અલગ રીતે વર્તે છે.

ટેબલ: Polymorphism ના પ્રકારો

પ્રકારવર્ણનક્યારે નક્કી થાય
Compile-timeMethod overloadingCompilation વખતે
Run-timeMethod overridingExecution વખતે

Run-time Polymorphism: Method call runtime પર actual object type આધારે resolve થાય.

આકૃતિ:

કોડ બ્લોક:

Java

આઉટપુટ:

કૂતરો ભસે છે
બિલાડી મ્યાં કરે છે
કૂતરો ભસે છે
બિલાડી મ્યાં કરે છે
કૂતરો ભસે છે

વિશેષતાઓ:

  • Dynamic Method Dispatch: JVM runtime પર નક્કી કરે છે કઈ method કૉલ કરવી
  • Upcasting: Child object ને parent reference દ્વારા reference કરવું
  • Flexibility: સમાન કોડ વિવિધ object types સાથે કામ કરે

મેમરી ટ્રીક: "Polymorphism અનેક રૂપ Runtime"


પ્રશ્ન 5(અ OR) [3 ગુણ]

જાવામાં એક પ્રોગ્રામ લખો જે બાઇટ બાય બાઇટ ફાઇલના કન્ટેન્ટ વાંચે અને તેને બીજી ફાઇલમાં કોપી કરે.

જવાબ:

કોડ બ્લોક:

Java

પગલાં:

  1. FileInputStream બનાવો વાંચવા માટે
  2. FileOutputStream બનાવો લખવા માટે
  3. બાઇટ બાય બાઇટ વાંચો read() વાપરીને
  4. દરેક બાઇટ લખો write() વાપરીને
  5. બંને streams બંધ કરો

મેમરી ટ્રીક: "Read Byte Write Byte"


પ્રશ્ન 5(બ OR) [4 ગુણ]

Java સાથે ઉપલબ્ધ વિવિધ I/O વર્ગો સમજાવો.

જવાબ:

ટેબલ: Java I/O Classes

Class TypeClass Nameહેતુ
Byte StreamFileInputStreamફાઇલમાંથી bytes વાંચે
Byte StreamFileOutputStreamફાઇલમાં bytes લખે
Character StreamFileReaderફાઇલમાંથી characters વાંચે
Character StreamFileWriterફાઇલમાં characters લખે
BufferedBufferedReaderકાર્યક્ષમ character reading
BufferedBufferedWriterકાર્યક્ષમ character writing

આકૃતિ: I/O Class Hierarchy

goat

કોડ ઉદાહરણ:

Java

મેમરી ટ્રીક: "Byte Character Buffered Streams"


પ્રશ્ન 5(ક OR) [7 ગુણ]

જાવા પ્રોગ્રામ લખો જે બે થ્રેડોને એક્ઝિક્યુટ કરે છે. એક થ્રેડ દર 3 સેકન્ડે "Java Programming" દર્શાવે છે, અને બીજો દર 6 સેકન્ડે "Semester - 4th IT" દર્શાવે છે. (થ્રેડને extending the Thread class દ્વારા બનાવો)

જવાબ:

કોડ બ્લોક:

Java

નમૂના આઉટપુટ:

Java Programming
Semester - 4th IT
Java Programming
Java Programming
Semester - 4th IT
Java Programming
Java Programming
Semester - 4th IT
...

વિશેષતાઓ:

  • બે અલગ threads: દરેક અલગ timing સાથે
  • Thread.sleep(): ચોક્કસ milliseconds માટે execution પોઝ કરે
  • Concurrent execution: બંને threads એકસાથે ચાલે છે
  • Thread class વિસ્તારવું: run() method ને override કરવું

Execution Pattern:

  • JavaThread: દર 3 સેકન્ડે દર્શાવે
  • SemesterThread: દર 6 સેકન્ડે દર્શાવે
  • બંને concurrent રીતે અલગ timing બતાવે છે

મેમરી ટ્રીક: "બે Threads અલગ Timing"