Java 基础线程

97 阅读1分钟

Java线程有两种基础创建方式

1.继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口,而且不复写run不会报错,这样容易出错)

extends Thread

2、实现Runnable接口(推荐使用的方法),实现接口必须复写run方法

implements Runnable

Java线程有两种启动方式

1、start启动

UdpReceiveThread thread1 = new UdpReceiveThread();
Thread thread=new Thread(thread1);
thread.start();

2、run启动

UdpReceiveThread thread1 = new UdpReceiveThread();
thread1.run();

备注:选择哪种方式启动呢?

多线程必须使用start启动,因为run方法是普通方法,是阻塞的,依次启动

实际验证如下: 结果是依次执行

Thread操作线程已经有很多的方法,比如

线程的中断

thread.interrupt();

中断线程的恢复(注意这个编译器是没有提示的,这是共有静态方法 public static )

thread.interrupted();

线程的等待(一般使用sleep())

thread.wait(1000);
Thread.sleep(1000);

wait() 是 Object 类的方法,会释放对象锁,并让出 CPU 资源。只能在 synchronized 下使用,使用 notify() 或 notiftAll() 唤醒。notify()唤醒也是随机唤醒一个等待的线程

sleep()是 Thread 类的静态方法,一般只会让出 CPU 资源。可以使低优先级的线程得到执行的机会。

线程的终止

一般不会使用到,一般线程自动执行完,或者永远的执行下去,但是我们有时候需要结束呢?

推荐的方法,使用标记

线程定义

public volatile boolean exit = false;

线程里面

if(exit) break;

调用的时候(注意对象是你的对象不是Thread对象)

thread1.exit=true;