Course Content
KM-01- Introduction to Java Programming
Module Code: 900102-000-00-KM-01 Credits: 2 Summary: This module introduces learners to the fundamentals of Java programming and basic computing concepts. It builds a strong foundation by covering essential topics such as how computers work, the Java environment, development tools, and core programming principles. Learners are also introduced to version control and the structure of Java programs, preparing them to begin writing, compiling, and managing simple applications.
0/13
KM-02- Principles of Programming with Java
Module Code: 900102-000-00-KM-02 NQF Level : NQF Level 4 Credits: 6 Credits This module builds the learner’s understanding of the principles of programming with the Java programming language. It covers Java program structure, variables, data types, arrays, strings, classes, conditionals, loops, algorithms, exception handling, file systems, multithreading, and the programming life cycle.
0/29
KM-03: Principles of Object-Oriented Programming with Java
his module introduces learners to the core principles and structure of Object-Oriented Programming (OOP) using Java. Learners will explore how object-oriented concepts are used to design scalable, reusable, and maintainable software applications in modern software development environments. The module covers the foundational concepts of OOP, including classes, objects, methods, inheritance, abstraction, encapsulation, polymorphism, aggregation, association, and composition. Learners will also examine the advantages of applying object-oriented principles in real-world software projects and enterprise application development. Through theoretical understanding and contextual programming examples, learners will develop the ability to analyse object-oriented structures, identify relationships between objects, and apply OOP principles to solve programming problems effectively. This module supports learner progression into intermediate and advanced Java development by building strong foundational knowledge required for application development, GUI systems, REST APIs, enterprise systems, and software engineering workflows.
0/4
KM-04- Principles of Intermediate Programming with Java
Module Code: 900102-000-00-KM-04 NQF Level: 4 Credits: 6 Curriculum Title: Java Programmer Curriculum Code: 900102-000-00-00 Module Summary This module focuses on building an understanding of the principles of intermediate programming with Java. Learners are introduced to more advanced Java concepts, including collections, generics, functional programming, concurrency, concurrent collections, and atomic operations.
0/9
KM-05- REST API and Modularization
Module Code: 900102-000-00-KM-05 NQF Level: 4 Credits: 2 Module Summary The main focus of this knowledge module is to build an understanding of the functionalities of REST API and modularization and when to use them. Learners will develop knowledge of REST API concepts, functions, features, and implementation approaches used in Java applications. The module also introduces Java modularization concepts, including module structures, dependency management, encapsulation, and modern Java features such as Local Variable Type Inference, Switch Expressions, Text Blocks, and Records. The module prepares learners to understand modern Java application development practices and modular software design.
0/5
PM-01- Getting Started with Java
Module Code: 900102-000-00-PM-01 NQF Level: 4 Credits: 3 Module Summary The main focus of this practical module is to introduce learners to the practical application of basic computer skills, Java installation and setup, Integrated Development Environments (IDEs), Java class creation, and Git commands. Learners will perform practical activities that involve setting up Java development environments, creating and running Java programs, navigating IDEs, and applying basic source code management practices using Git. The module prepares learners for practical Java software development activities in modern programming environments.
0/10
PM-02- Programming with Java
Module code: 900102-000-00-PM-02 NQF Level: 4 Credits: 8 Module Summary This module introduces learners to practical Java programming skills used in software development. Learners develop the ability to create and run Java programs, work with variables and data types, use arrays and ArrayLists, create and manage classes and objects, and apply core programming concepts such as loops, conditionals, algorithms, exception handling, and multithreading. The module also covers string manipulation, file handling, wrapper classes, and the programming lifecycle used to develop complete software solutions. By the end of the module, learners will be able to design, write, test, and troubleshoot Java applications using structured programming techniques and object-oriented programming principles.
0/44
PM-03- Object-Oriented Programming with Java
Module code: 900102-000-00-PM-03 NQF Level: 4 Credits: 4 Module Summary This practical module introduces learners to Object-Oriented Programming (OOP) using Java. Learners will apply practical Java programming skills to design classes, create objects, apply inheritance, use constructors, manage object state, and develop reusable Java applications. The module focuses on practical implementation of OOP principles including: * encapsulation, * inheritance, * polymorphism, * and abstraction. Learners will also compile, execute, and organize Java programs correctly within Java file systems and directories. The module prepares learners for real-world Java software development environments through hands-on practical activities and problem-solving scenarios.
0/2
PM-04- Intermediate Programming with Java
Module code: 900102-000-00-PM-04 NQF Level: 4 Credits: 6 Module Summary This practical module introduces learners to intermediate Java programming concepts and practical software development techniques using modern Java functionalities. Learners will apply Java collections, generics, functional programming concepts, and concurrency techniques to create efficient and scalable Java applications. The module focuses on practical implementation of: * Java collections and data structures, * generics and type safety, * functional programming using lambda expressions and streams, * and concurrent programming using synchronization and concurrent collections. Learners will develop hands-on Java applications that manage collections, process data functionally, and handle concurrent operations safely within multi-threaded environments. The module prepares learners for real-world Java software development by strengthening problem-solving abilities, improving software performance, and introducing enterprise-level programming techniques commonly used in modern Java applications.
0/8
PM-05- Getting Started with REST API and Modularization
Module code: 900102-000-00-PM-05 NQF Level: 4 Credits: 4 Module Summary This practical module introduces learners to REST API development and Java modularization using modern Java technologies and frameworks. Learners will develop practical skills in connecting Java applications to databases, creating RESTful web services, implementing CRUD operations, and deploying databases using Docker. The module focuses on practical implementation of: * JDBC database connectivity, * REST API development using Java and Spring Boot, * CRUD operations using HTTP methods, * Docker containerization, * Java modularization, * and modern Java APIs. Learners will build practical Java applications that connect to MySQL databases, manage data using REST APIs, split applications into Java modules, and apply modern Java functionalities for cleaner and more scalable code. The module prepares learners for enterprise-level Java software development environments where REST APIs, modular applications, and containerized systems are widely used in modern software engineering.
0/4
PM-06- Keystone Project with Java
Module code:900102-000-00-PM-06 NQF Level: 4 Credits: 8 Module Summary This practical module provides learners with the opportunity to complete a comprehensive Keystone Project using the Java programming language. Learners will apply all the programming knowledge and practical skills acquired throughout the qualification to design, develop, test, and execute real-world Java applications. The module focuses on practical implementation of: * core Java programming, * arrays and objects, * conditions and loops, * GUI development, * game development, * and complete Java application solutions using frameworks and environments of the learner’s choice. Learners will complete practical exercises, build an operable Java game, and develop a contextual GUI-based solution within a selected sector such as: * retail, * healthcare, * IoT, * cloud computing, * mobile development, * or network systems. The module prepares learners for real-world software development environments by strengthening problem-solving abilities, practical development experience, creativity, and application deployment skills using Java technologies and frameworks.
0/6
Java Programmer Skills Programme

LESSON 19

3.1 Lesson Outcomes

After completing this lesson, learners will be able to:

  • Define threads and multithreading in Java.
  • Explain the purpose of concurrency in Java applications.
  • Create and run threads in Java.
  • Differentiate between single-threaded and multithreaded applications.
  • Explain the importance of multithreading in software development.

3.2 Overview

Modern software applications often perform multiple tasks simultaneously. Java supports multithreading, which allows applications to execute multiple threads concurrently to improve efficiency, responsiveness, and performance.

This lesson introduces learners to threads and concurrency in Java and explains how multithreading supports background processing and concurrent task execution. Learners will also explore how threads are created and managed in Java applications.

Multithreading is commonly used in:

  • banking systems,
  • gaming applications,
  • web applications,
  • mobile applications,
  • and enterprise software.

Understanding multithreading is important because many modern software systems rely on concurrent processing.


KT1901 — Introduction to Threads

A thread is a lightweight unit of execution inside a Java program.

Threads allow applications to perform multiple tasks concurrently.

A Java application may contain:

  • one thread,
  • or multiple threads.

Importance of Threads

Threads help applications:

  • improve performance,
  • support multitasking,
  • increase responsiveness,
  • and process tasks concurrently.

KT1902 — Single-Threaded vs Multithreaded Applications

A single-threaded application executes one task at a time.

A multithreaded application executes multiple tasks concurrently.


Comparison

Single-Threaded Multithreaded
Executes one task Executes multiple tasks
Slower for complex processing Faster and more responsive
Simpler structure Supports concurrent execution

Importance of Multithreading

Multithreading improves:

  • user experience,
  • processing efficiency,
  • and application performance.

KT1903 — Creating Threads Using the Thread Class

Threads can be created by extending the Thread class.


Example

 
class MyThread extends Thread {

public void run() {

System.out.println("Thread is running");
}
}
 

Running the Thread

 
public class Main {

public static void main(String[] args) {

MyThread thread = new MyThread();

thread.start();
}
}
 

Output

 
Thread is running
 

Explanation

Component Purpose
Thread Java thread class
run() Contains thread task
start() Starts thread execution

Importance of the Thread Class

The Thread class supports:

  • concurrent processing,
  • multitasking,
  • and background operations.

KT1904 — Creating Threads Using Runnable Interface

Java also supports thread creation using the Runnable interface.


Example

 
class MyTask implements Runnable {

public void run() {

System.out.println("Runnable thread executing");
}
}
 

Running the Runnable Thread

 
public class Main {

public static void main(String[] args) {

MyTask task = new MyTask();

Thread thread = new Thread(task);

thread.start();
}
}
 

Output

 
Runnable thread executing
 

Importance of Runnable

Runnable:

  • supports flexible thread design,
  • allows class inheritance elsewhere,
  • and is widely used in Java development.

KT1905 — Thread Lifecycle

Threads move through different states during execution.


Thread States

State Description
New Thread created
Runnable Ready for execution
Running Currently executing
Blocked Waiting for resource
Terminated Execution completed

Importance of Thread Lifecycle

Understanding thread states helps developers:

  • manage execution,
  • improve performance,
  • and avoid application issues.

KT1906 — Thread Sleep

The sleep() method pauses thread execution temporarily.


Example

 
public class Main {

public static void main(String[] args)
throws InterruptedException {

System.out.println("Start");

Thread.sleep(2000);

System.out.println("End");
}
}
 

Output

 
Start
End
 

Explanation

 
2000 milliseconds = 2 seconds
 

The thread pauses execution for 2 seconds.


Importance of sleep()

The sleep() method helps:

  • manage timing,
  • delay execution,
  • and control thread scheduling.

KT1907 — Concurrency in Java Applications

Concurrency allows multiple tasks to progress during the same execution period.

Concurrency improves:

  • responsiveness,
  • multitasking,
  • and application efficiency.

Examples of Concurrency

Concurrency is used in:

  • downloading files while browsing,
  • video streaming,
  • background notifications,
  • and transaction processing.

KT1908 — Challenges of Multithreading

Multithreading may introduce:

  • synchronization issues,
  • resource conflicts,
  • and complexity.

Common Challenges

Challenge Description
Race Condition Multiple threads accessing shared data
Deadlock Threads waiting indefinitely
Synchronization Issue Inconsistent data access

Importance of Thread Management

Proper thread management helps:

  • maintain stability,
  • improve performance,
  • and prevent application errors.

KT1909 — Real-World Use of Multithreading

Multithreading is used in:

  • banking systems,
  • gaming applications,
  • mobile applications,
  • web servers,
  • and enterprise systems.

Examples:

  • background processing,
  • simultaneous user handling,
  • transaction processing,
  • and live system monitoring.

Multithreading improves efficiency and responsiveness in software applications.


3.5 Key Notes / Summary

  • Threads are lightweight units of execution.
  • Multithreading supports concurrent processing.
  • Java supports Thread and Runnable approaches.
  • The run() method contains thread tasks.
  • The start() method begins execution.
  • Threads move through lifecycle states.
  • Multithreading improves application performance and responsiveness.
Scroll to Top