java线程通信,解决线程之间的交互问题
来源:互联网 发布:json解析哪些框架 编辑:程序博客网 时间:2024/06/05 16:59
线程通信:
注意三个都是Object的方法 并且都必须在synchronzied代码块和安全方法下使用否则会报异常
wiat:使当前线程挂起,释放锁,其他线程可以参与进来共享其数据。
notify:唤醒当前线程,让线程握住锁,其他线程无法参与进来。
notifyall:唤醒所有的线程。
下面为活生生列子一枚:
public class ThreadTest {
public static void main(String[] args) {
Account acc=new Account();
Custom c1=new Custom(acc);
Custom c2=new Custom(acc);
c1.setName("线程1");
c2.setName("线程2");
c1.start();
c2.start();
}
}
class Custom extends Thread{
Account ac;
public Custom(Account acc) {
this.ac=acc;
}
public void run(){
try {
for(int i=0;i<3;i++){
ac.deposit(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Account{
double balance;
public Account(){}
public synchronized void deposit(double many) throws InterruptedException{
notify();//唤醒线程
balance+=many;
Thread.currentThread().sleep(10);
System.out.println(Thread.currentThread().getName()+":"+balance);
wait();//挂起线程
}
}
打印结果 为交替执行:
线程1:1000.0
线程2:2000.0
线程1:3000.0
线程2:4000.0
线程1:5000.0
线程2:6000.0
- java线程通信,解决线程之间的交互问题
- java线程之间的通信
- Java线程之间的通信
- java线程之间的通信
- java线程之间的通信
- java线程之间通信
- 关于线程之间的通信问题
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- some apis
- GCD详解及实现
- PHP缓存技术的使用说明
- Swift UIView 的多种添加方法和打标签和移除(方法的详解)、父子视图的关系
- homerHEVC代码阅读(6)——基础结构之hvenc_enc_t
- java线程通信,解决线程之间的交互问题
- 使用ViewPager进行Tab标签对应的Fragment切换
- 编写一个计算前100位斐波那契数的函数。
- 简述strcpy、sprintf与memcpy的区别
- UML图之构件图和部署图
- mini2440_x35 使用minicom进行连接,传送文件
- 哈夫曼编码
- hdoj5586Sum
- [JavaWeb]Maven安装配置