Java-线程间通信

来源:互联网 发布:fastjson bean转json 编辑:程序博客网 时间:2024/05/22 03:32

Java-线程间通信
一 线程通讯
就是多个线程操作同一个资源,但是操作的动作不同

二 停止线程:
控制住run的循环就可以控制线程结束

当线程处于冻结状态,就不会读取标记,线程就不会结束

interrupt中断函数:从冻结状态变为运行状态,强制转变状态会抛出中断异常

当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结状态清楚
强制让想成恢复到运行状态。这样就可以操作标记让线程结束

三 常见Thread类方法:
setDaemon(boolean):
标记为守护线程或用户进程,当正在运行的线程都是守护线程时,Java 虚拟机退出。
该方法必须在启动线程前调用。

join():必须等待当前线程执行结束,当前线程持有cpu执行权,再切换到主线程(之前主线程被冻结)
当A线程执行到B线程的join方法时,A线程就会等待,等待B线程执行完才会执行
可以用来临时加入线程执行

toString():
返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

setPriority():优先级,默认为5,可以更改线程的优先级
这三个常用
1 MIN_Priority,
5 NOM_Priority,
10 MAX_Priority

yield():暂停当前正在执行的线程对象,并执行其他线程

四 线程补充
线程池中存放等待的线程

在等待唤醒机制(信号量)中,多个线程相互通信的资源类应该使用
while标记
notifyAll通知唤醒线程池所有线程
同步函数
如下图:
这里写图片描述

0 0