Home > Java > javaTutorial > body text

Cap Programming with multiple threads

Mary-Kate Olsen
Release: 2024-11-22 05:38:17
Original
902 people have browsed it

Main skills and concepts
• Understand the fundamentals of creating multiple threads
• Know the Thread class and the Runnable
interface • Create a thread
• Create multiple threads
• Determine when a thread ends
• Use thread priorities
• Understand thread synchronization
• Use synchronized methods
• Use synchronized blocks
• Promote communication between threads
• Suspend, resume and stop threads

Threads: These are independent paths of execution within a program.
Multitasking: It can be based on processes (several programs) or threads (several tasks in the same program).
Advantages:
Greater efficiency when using idle time.
Better use of multicore/multiprocessor systems.

Thread Creation and Management

Classes and Interfaces:
Thread: Class that encapsulates threads.
Runnable: Interface used to define custom threads.

Common Thread Class Methods:

  • getName(): Returns the name of the thread.
  • getPriority(): Returns the priority.
  • isAlive(): Checks if the thread is still executing.
  • join(): Waits for the thread to finish.
  • run(): Defines the entry point of the thread.
  • sleep(long ms): Suspends the thread for a period of time.
  • start(): Starts thread execution.

Creating Threads:

  • Implementing Runnable:
class MyThread implements Runnable {
    String threadName;

    MyThread(String name) {
        threadName = name;
    }

    public void run() {
        System.out.println(threadName + " starting.");
        try {
            for (int i = 0; i < 10; i++) {
                Thread.sleep(400);
                System.out.println("In " + threadName + ", count is " + i);
            }
        } catch (InterruptedException e) {
            System.out.println(threadName + " interrupted.");
        }
        System.out.println(threadName + " terminating.");
    }
}

public class UseThreads {
    public static void main(String[] args) {
        System.out.println("Main thread starting.");

        MyThread myThread = new MyThread("Child #1");
        Thread thread = new Thread(myThread);
        thread.start();

        for (int i = 0; i < 50; i++) {
            System.out.print(".");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println("Main thread interrupted.");
            }
        }
        System.out.println("Main thread ending.");
    }
}

Copy after login

Expected output:

Main thread starting.
.
Child #1 starting.
..
In Child #1, count is 0
...
In Child #1, count is 1
...
Main thread ending.

Copy after login

Thread Class Extension:

class MyThread extends Thread {
    MyThread(String name) {
        super(name);
    }

    public void run() {
        System.out.println(getName() + " starting.");
        try {
            for (int i = 0; i < 10; i++) {
                Thread.sleep(400);
                System.out.println("In " + getName() + ", count is " + i);
            }
        } catch (InterruptedException e) {
            System.out.println(getName() + " interrupted.");
        }
        System.out.println(getName() + " terminating.");
    }
}

public class UseThreads {
    public static void main(String[] args) {
        System.out.println("Main thread starting.");

        MyThread thread = new MyThread("Child #1");
        thread.start();

        for (int i = 0; i < 50; i++) {
            System.out.print(".");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println("Main thread interrupted.");
            }
        }
        System.out.println("Main thread ending.");
    }
}

Copy after login

note: The sleep() method makes the thread in which it is called suspend execution
for the specified period of milliseconds.

book table
Cap Programação com várias threads

The above is the detailed content of Cap Programming with multiple threads. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template