Java多线程

一、程序,进程,线程

程序:指令和数据的有序集合。

进程:执行程序的一次执行过程,是系统资源分配的单位。

线程:一个进程可以包含若干个线程,线程是CPU调度和执行的单位。

二、线程的创建

1.继承Thread

自定义线程类继承Thread类;

重写run()方法,编写线程执行体;

创建线程对象,调用start()方法启动线程。

2.实现Runnable

定义线程类实现Runnable接口

实现run()方法,编写线程执行体

创建线程对象,调用start()方法启动线程

3.实现Callable

实现Callable接口,需要返回值类型

重写call方法,需要抛出异常

创建目标对象

创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);

提交执行:Future result1 = ser.submit(t1);

获取结果:boolean r1 = result1.get();

关闭服务:ser.shutdownNow();

三、线程状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TRSLn847-1639220009189)(C:\Users\zq\AppData\Roaming\Typora\typora-user-images\image-20211211181601689.png)]

1.线程停止

不推荐使用JDK提供的stop()、destroy()方法

推荐线程自己停下来

建议使用一个标识位进行终止变量,当flag=false,则终止线程之执行

2.线程休眠

sleep(时间)指定当前线程阻塞的毫秒数;

sleep存在异常InterruptedException;

sleep时间达到后线程进入就绪状态;

sleep可以模拟网络延时,倒计时等;

每一个对象都有一个锁,sleep不会释放锁。

3.线程礼让

yield()

礼让线程,让当前正在执行的线程暂停,但不阻塞

将线程从运行状态转为就绪状态

让cpu重新调度,礼让不一定成功

4.线程强制执行

join()

合并线程,待此线程执行完后,再执行其他线程,其他线程阻塞。

持续更新中。。。

上一篇:Linux:进程


下一篇:Writing to a MySQL database from SSIS