java线程
来源:互联网 发布:js 获取子字符串 编辑:程序博客网 时间:2024/06/07 03:27
join()函数必须在创建一个线程,并且启动这个线程后,也就是start之后才起作用,如果不start,直接join。该线程还没启动,所以不起作用。
join必须放在start之后。
join之前必须有start;
join作用是让调用该方法的线程先执行。
sleep可以指定睡眠的时间,yield不指定睡眠的时间。
sleep可以让低优先级线程优先执行。yield只在同优先级的线程间起作用。
sleep,yield都是让调用他的线程睡眠。
synchronized,用户在多线程同步问题中使用。类似于互斥锁。在同一时刻只允许一个线程操作用synchronized标识的变量或者函数。
在需要互斥操作的多线程中,在函数前面加上synchronized。。。
保护函数时如下:
public synchronized int add(){
}
保护代码块时如下:
synchronized(this){
代码块!
}
synchronized只能解决线程互斥问题,不能解决同步问题。在java中解决同步问题,需要使用wait(),notify(),和notifyAll(),来使一个线程优先于另一个线程执行。这三个函数必须在synchronized保护的函数和,代码块中使用。
wait 使线程等待。让获得synchronized保护的Thread暂时休息。丧失控制权。
notify 用于通知正在等待的线程列表里的第一个线程。
notifyAll 用于通知等待列表里面的所有线程。
用户唤醒丧失控制权的线程,由于丧失控制权,所以需要等唤醒它的线程结束操作之后才能重新获得控制权。
只是唤醒,并不是马上工作,需要当前线程结束之后才能重新运行。
join必须放在start之后。
join之前必须有start;
join作用是让调用该方法的线程先执行。
sleep可以指定睡眠的时间,yield不指定睡眠的时间。
sleep可以让低优先级线程优先执行。yield只在同优先级的线程间起作用。
sleep,yield都是让调用他的线程睡眠。
synchronized,用户在多线程同步问题中使用。类似于互斥锁。在同一时刻只允许一个线程操作用synchronized标识的变量或者函数。
在需要互斥操作的多线程中,在函数前面加上synchronized。。。
保护函数时如下:
public synchronized int add(){
}
保护代码块时如下:
synchronized(this){
代码块!
}
synchronized只能解决线程互斥问题,不能解决同步问题。在java中解决同步问题,需要使用wait(),notify(),和notifyAll(),来使一个线程优先于另一个线程执行。这三个函数必须在synchronized保护的函数和,代码块中使用。
wait 使线程等待。让获得synchronized保护的Thread暂时休息。丧失控制权。
notify 用于通知正在等待的线程列表里的第一个线程。
notifyAll 用于通知等待列表里面的所有线程。
用户唤醒丧失控制权的线程,由于丧失控制权,所以需要等唤醒它的线程结束操作之后才能重新获得控制权。
只是唤醒,并不是马上工作,需要当前线程结束之后才能重新运行。
0 0
- Java线程:什么是线程
- Java线程:线程池
- java线程--线程退出
- JAVA-线程/线程锁
- Java线程:什么是线程
- Java线程:线程中断
- Java线程:线程状态
- Java线程: 线程调度
- Java线程:线程交互
- java--线程--线程池
- java 线程
- Java线程
- java线程
- java线程
- Java线程
- Java线程
- java线程
- JAVA 线程
- POJ 1324 贪吃蛇状态压缩BFS
- 关于闭包
- 浅谈Objective-C异常处理
- js优化
- time_t 与字符串之间的相互转换
- java线程
- test
- hdu 5188 zhx and contest && BestCoder Round #33
- js 监听 鼠标滚轮
- java第二次课堂小作业求 五个数的平均数 最大数以及最小数
- 颜色名称与RGB对照表
- hadoop-eclipse-plugin安装配置
- 学习Linux笔记(五)-Mysql应用
- Android Fragment---给动作栏添加项目