Java 中的线程
今天在一次采访中,我被问到Java中的Thread概念?问题是...
- 什么是线程?
- 我们为什么要进行线程化?
- 线程上的实时示例。
- 我们可以在Spring框架服务类中创建线程吗?
- flex 可以调用线程吗?
除了Thread的定义之外,我没有回答任何问题,这也是我刚刚从互联网上学到的。
任何人都可以清楚地解释我。
更新:
线程和普通的java类有什么区别,为什么我们需要线程化?我可以在线程中执行业务逻辑吗?我可以在线程中调用不同的类方法吗?
今天在一次采访中,我被问到Java中的Thread概念?问题是...
除了Thread的定义之外,我没有回答任何问题,这也是我刚刚从互联网上学到的。
任何人都可以清楚地解释我。
更新:
线程和普通的java类有什么区别,为什么我们需要线程化?我可以在线程中执行业务逻辑吗?我可以在线程中调用不同的类方法吗?
若要创建线程,请创建一个扩展该类的新类,并实例化该类。扩展类必须重写该方法并调用该方法以开始执行线程。Thread
run
start
在 里面,您将定义构成新线程的代码。重要的是要了解它可以调用其他方法,使用其他类并像主线程一样声明变量。唯一的区别是为程序中的另一个并发执行线程建立入口点。这将在返回时结束。run
run
run
run
下面是一个示例:
public class MyThread extends Thread {
private final String name;
public MyThread(String name) {
this.name = name;
}
public void run() {
try {
for (; ; ) {
System.out.println(name);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("sleep interrupted");
}
}
public static void main(String[] args) {
Thread t1 = new MyThread("First Thread");
Thread t2 = new MyThread("Second Thread");
t1.start();
t2.start();
}
}
您将在屏幕上看到以下内容:
First Thread
Second Thread
First Thread
Second Thread
First Thread
多线程处理是一项 Java 功能,它允许并发执行程序的两个或多个部分,以最大限度地利用 CPU。此类程序的每个部分称为一个线程。VoI
线程是进程中的轻量级进程。
线程可以通过使用两种机制来创建:
通过扩展 Thread 类创建线程
我们创建一个扩展该类的类。此类重写类中可用的方法。线程在方法内部开始其生命。我们创建新类的对象并调用方法来启动线程的执行。 调用对象上的方法。java.lang.Thread
run()
Thread
run()
start()
Start()
run()
Thread
class MultithreadingDemo extends Thread{
public void run() {
try { // Displaying the thread that is running
System.out.println ("Thread " + Thread.currentThread().getId()
+ " is running");
}
catch (Exception e){ // Throwing an exception
System.out.println ("Exception is caught");
}
}
}
public class Multithread{
public static void main(String[] args) {
int n = 8; // Number of threads
for (int i=0; i<8; i++) {
MultithreadingDemo object = new MultithreadingDemo();
object.start();
}
}
}
通过实现可运行接口创建线程
我们创建一个实现接口和重写方法的新类。然后,我们实例化一个 Thread 对象,并在此对象上调用方法。java.lang.Runnable
run()
start()
class MultithreadingDemo implements Runnable{
public void run() {
try { // Displaying the thread that is running
System.out.println ("Thread " + Thread.currentThread().getId() +
" is running");
}
catch (Exception e) { // Throwing an exception
System.out.println ("Exception is caught");
}
}
}
class Multithread{
public static void main(String[] args) {
int n = 8; // Number of threads
for (int i=0; i<8; i++) {
Thread object = new Thread(new MultithreadingDemo());
object.start();
}
}
}
线程类与可运行接口
如果我们扩展 Thread 类,我们的类就无法扩展任何其他类,因为 Java 不支持多重继承。但是,如果我们实现 Runnable 接口,我们的类仍然可以扩展其他基类。
我们可以通过扩展 Thread 类来实现线程的基本功能,因为它提供了一些内置方法,如 yield()、interrupt() 等,这些方法在 Runnable 接口中不可用。