Skip to content

线程在JAVA的使用

更新: 1/11/2025 字数: 0 字 时长: 0 分钟

Thread的创建形式

1.实现 Runnable 接口或使用lambda表达式

java
public class RunnableTest implements Runnable{
    @Override
    public void run() {
        System.out.println(1);
    }
}
java
    public static void main(String[] args) {

        Thread t1=new Thread(new RunnableTest());
        Thread t2=new Thread(()->{
            System.out.println("124");
        });
        t1.start();
        t2.start();

    }

2.实现 Callable 接口并用 FutureTask 进行封装。

java
public class CallableTest implements Callable {
    @Override
    public Object call() throws Exception {
        return 1;
    }
}
java
    public static void main(String[] args) throws ExecutionException, InterruptedException {

        FutureTask futureTask=new FutureTask(new CallableTest());
        Thread t1=new Thread(futureTask);
        t1.start();
        System.out.println(futureTask.get()); //获取返回值
    }

3.继承Thread类并直接创建

java
public class ThreadTest extends Thread{
    @Override
    public void run() {
        System.out.println(123);
    }
}
java
public class Main {

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

        ThreadTest threadTest=new ThreadTest();
        threadTest.start();  //会直接调用内部的run方法
    }
}

线程的常用方法

  1. Thread.sleep()方法会休眠当前正在执行的线程
  2. Thread.yield()方法会建议当前线程可以被切换走了,换下一线程执行。但该方法只是建议,并非一定会切换走
  3. thread.interrupted() 该成员方法会中止某一线程,使该线程提前结束
  4. thread.join() 在一个线程中使用另一个线程的join方法,会先执行另一个线程,当前线程则会挂起,等另一线程执行完后再接着向下自行,
  5. Object.wait() 会让执行到该对象的该方法的线程挂起,并释放该线程占用的锁。只有当另一线程执行到了该对象的notify()方法或notifyAll()方法才会被唤醒。
    notify()方法只会随机唤醒一个挂起的线程,而notifyAll()会唤醒所有等待中的线程。
    sleep()相对wait()在于sleep不会释放锁
本站访客数 人次      本站总访问量