创建线程的Java程序
线程可以称为轻量级进程。线程使用更少的资源来创建和存在于进程中;线程共享进程资源。 Java的主线程是程序启动时启动的线程。从线程是作为主线程的结果创建的。这是完成执行的最后一个线程。
可以通过以下方式以编程方式创建线程:
- 实现Java.lang.Runnable 接口。
- 扩展Java.lang.Thread 类。
您可以通过实现可运行接口并覆盖 run() 方法来创建线程。然后,您可以创建一个线程对象并调用 start() 方法。
线程类:
Thread 类提供用于创建和操作线程的构造函数和方法。该线程扩展了 Object 并实现了 Runnable 接口。
// start a newly created thread.
// Thread moves from new state to runnable state
// When it gets a chance, executes the target run() method
public void start()
可运行界面:
任何具有打算由线程执行的实例的类都应该实现 Runnable 接口。 Runnable 接口只有一种方法,称为 run()。
// Thread action is performed
public void run()
创建线程的好处:
- 与进程相比, Java线程更轻量级;创建线程所需的时间和资源更少。
- 线程共享其父进程的数据和代码。
- 线程通信比进程通信简单。
- 线程之间的上下文切换通常比进程之间的切换便宜。
调用 run() 而不是 start()
常见的错误是使用 run() 而不是 start() 方法启动线程。
Thread myThread = new Thread(MyRunnable());
myThread.run(); //should be start();
您创建的线程不会调用 run() 方法。相反,它由创建myThread的线程调用。
示例 1:通过使用线程类
Java
import java.io.*;
class GFG extends Thread {
public void run()
{
System.out.print("Welcome to GeeksforGeeks.");
}
public static void main(String[] args)
{
GFG g = new GFG(); // creating thread
g.start(); // starting thread
}
}
Java
import java.io.*;
class GFG implements Runnable {
public static void main(String args[])
{
// create an object of Runnable target
GFG gfg = new GFG();
// pass the runnable reference to Thread
Thread t = new Thread(gfg, "gfg");
// start the thread
t.start();
// get the name of the thread
System.out.println(t.getName());
}
@Override public void run()
{
System.out.println("Inside run method");
}
}
输出
Welcome to GeeksforGeeks.
示例 2:通过实现 Runnable 接口
Java
import java.io.*;
class GFG implements Runnable {
public static void main(String args[])
{
// create an object of Runnable target
GFG gfg = new GFG();
// pass the runnable reference to Thread
Thread t = new Thread(gfg, "gfg");
// start the thread
t.start();
// get the name of the thread
System.out.println(t.getName());
}
@Override public void run()
{
System.out.println("Inside run method");
}
}
输出
gfg
Inside run method