线程是程序的一种操作单元,在程序中,一个线程和另一个线程是同时存在的。它是一个程序的一部分,但是他又是独立的,它不会影响到另一个线程的执行。但是多个线程同时运行时,会对系统资源造成一定的消耗。 线程之间的竞争是导致程序执行效率低下的主要原因之一。当多个线程同时运行时,其中一个线程执行失败或执行时间过长时,就会阻塞其他所有线程。所以我们需要创建多个线程,来提高程序的运行效率。
-
一、创建一个新的线程
创建一个新的线程,是创建多个线程的基础,当我们需要多个线程的时候,就需要使用线程池来管理。 使用 Java提供的 Thread类来创建线程,这里使用的是一个继承 Thread类的java.la ng. Thread类,下面是创建新的线程的代码: 其中 name代表这个线程的名字, static代表这个线程类型为 Long, static修饰符代表这个线程是永久存在的。我们把一个线程命名为 thread. close。 在 Java中创建一个新的线程,可以通过使用 Object类中提供的 Thread类来完成。这个 Object类提供了一个创建 Thread对象和实现了 Thread接口的类。 我们首先把新创建出来的 thread对象实例化,然后通过实现了 Thread接口的类,就可以获得这个新创建出来的 Thread对象了。
-
1、创建一个 Thread对象
创建 Thread对象的过程与创建线程的过程是一致的,首先使用 Thread接口中定义的构造函数创建一个对象,然后在实例化这个对象。这个构造函数用来创建一个新的 Thread对象,该对象是一个字符串,它包含了我们想要定义的 Thread类和一些属性。在 Java中,我们可以使用 Java内置的继承方法来创建新的对象,也可以通过实例化现有对象来创建新的对象。 我们可以使用 Thread类中提供的构造函数来创建一个新的线程对象,这里使用了一个构造函数来获取这个线程对象,并实例化它。在方法体中,使用了 thread. value属性来进行值传递,通过这个属性,可以把新创建出来的线程对象实例化。
-
2、获取这个 Thread对象
在这个类中, thread对象的值为0,说明这个 Thread对象是一个线程,此时就可以获取到这个 Thread对象。 注意:如果我们需要在同一个线程中执行不同的任务,需要使用线程池来管理多个线程。这时就需要通过以下方式来实现了: 在 Java中,我们使用线程池的时候,需要使用 Thread对象来创建线程。下面是一个实现了 Thread接口的类,在这个类中使用了 Thread接口中的 thread方法来创建线程。在创建线程的时候,使用方法 new Thread ()来初始化 Thread对象。调用方法 new Thread ()之后,会获得一个新的线程对象,并将这个新的线程对象分配给新创建出来的线程。
-
-
二、调用已有的线程
调用已有的线程的方法有两种: 1)。直接调用 Thread类中的 threadLock ()方法; 2)。通过对象的 threadLock属性来实现。 在上面的例子中,使用 ThreadLock ()方法可以调用两个线程:第一个线程创建了一个新的线程,它是由 Thread类中的 thread对象创建的。这种方法效率很高,但是不够灵活,因为 thread对象是一个类,而不是一个对象。
-
1、第二个线程创建了一个新的线程,它是由 Thread对象中的 ThreadLock属性来创建的。
使用这种方法,可以实现在不改变对象的类或接口的情况下创建新的线程。这种方法效率很高,因为它是通过调用一个已有的 Thread类中的 ThreadLock属性来创建新的线程。但是,这种方法不够灵活,因为它是通过对象本身来创建新线程,而不是通过线程本身来创建。使用这种方法创建线程有一个缺点:如果该对象没有被调用,那么该线程将不会执行。为了解决这个问题,我们可以这样做:在 Thread类中定义一个继承 Thread. void ()的方法,这个方法用于调用一个已有的 Thread类中的 thread属性,然后在该 thread对象上调用这个已有的 thread对象中的 ThreadLock ()方法。这样就可以保证该线程不会被调用,因为它被调用时已经有了一个已有的 Thread对象。
-
2、两个线程同时被创建,它们是通过一个线程调用另一个线程来实现的。
使用线程的方法很简单,但需要注意以下几点: 1)。由于是通过一个线程调用另一个线程,所以线程的创建是被中断的,所以在线程执行之前需要确定好哪个线程是当前线程。 2)。要实现一个线程,必须要有一个参数,这个参数就是线程的名称。如果不知道线程的名称,可以使用 static关键字来定义,其值为 NULL。 3)。通过调用 ThreadLock ()方法来创建新的线程时,应该使用 static关键字来指定 Thread类中哪个对象是当前线程。
-
-
三、线程间通信
线程间通信是指两个或多个线程之间进行信息交换的过程,这是实现线程间通信的关键。在 Java中,有两种实现方式:事件和回调函数。事件方式主要用于接收和发送消息;回调函数则用于接收和发送数据。在 Java中,可以使用 Thread类来实现事件和回调函数,但为了提高效率,建议使用 expiration类。 在上面的例子中,我们创建了一个 Thread类,并且设置了它的 state属性为1。
-
常用的java创建线程代码:
-
1. 继承Thread类:
```java
public class MyThread extends Thread {
@Override
public void run() {
// 线程执行的代码
}
}
// 创建线程并启动
MyThread myThread = new MyThread();
myThread.start();
```
2. 实现Runnable接口:
```java
public class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行的代码
}
}
// 创建线程并启动
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
```
3. 使用匿名内部类:
```java
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 线程执行的代码
}
});
thread.start();
```
4. 使用Lambda表达式:
```java
Thread thread = new Thread(() -> {
// 线程执行的代码
});
thread.start();
```