多线程 等待/通知机制

多线程 等待/通知机制
1.通过操作值和操作栈进行传递消息
  多生产 多消费 模式要多看看


2.通过管道进行传递消息
2.1字节流
PipedInputStream  PipedOutputStream
2.2字符流
PipedReader  PipedWriter


3.join  意思就是把子线程合并到主线程上来
主线程创建并启动了子线程,为了防止子线程未完成主线程就结束,需要调用子线程的join方法,达到让主线程等待子线程运行完的效果


3.1join内部使用wait来进行等待,sychronized使用对象监视器来同步
3.2join过程中,如果主线程被中断会报错,但是子线程依然运行
3.3join和wait一样,哪个线程执行的此操作,等待的就是哪个线程,和调用者没有关系,调用者只是一个锁对象而已。线程本身就是锁对象
    通过3.3可以知道,join必须要得到锁对象才行,也就是说他必须要去抢锁,然后才会等待。


4.ThreadLocal
每个线程的私有变量
同级线程之间,和父子线程之间都具有隔离性,最常见的ThreadLocal使用场景为 用来解决 数据库连接、Session管理等。
private static ThreadLocal<Connection> connectionHolder = new ThreadLocal<Connection>() {
	public Connection initialValue() {
	    return DriverManager.getConnection(DB_URL);
	}
};
 
public static Connection getConnection() {
	return connectionHolder.get();
}

具体可以参考:http://qifuguang.me/2015/09/02/[Java%E5%B9%B6%E5%8F%91%E5%8C%85%E5%AD%A6%E4%B9%A0%E4%B8%83]%E8%A7%A3%E5%AF%86ThreadLocal/#comments

InheritableThreadLocal
可以让子线程继承父线程的值

主线程和子线程的关系是什么?
第一种是父线程是进程的主线程,子线程由主线程创建;
第二种情况是父线程为进程主线程创建的一个子线程,而这个子线程又创建了一个孙线程,这种情况大多被称为子孙线程。
对于java而言:使用main方法作为程序入口时,其实是启动了一个进程。所以即使主线程(main方法创建的线程)只执行一次,只要其子线程未执行结束,就会一直处于运行状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值