Java线程
2016-07-31 03:30
239 查看
线程与进程的区别:
进程是线程的容器,不同进程间相互独立,同一进程不同线程间资源共享。
进程间通信需要特殊方法,比如管道,线程间通信可以通过共享变量。
java有两种方法创建线程,优先使用Runnable接口,因为java只支持单继承。
简单的线程调度:
常用方法:
sleep()是静态方法。
重写run()方法不能throws Exception。
终止线程最好方法:可以设置一个boolean变量。
synchronized
1.修饰方法放到public后面(不能被继承)
同一时间只有一个线程可以访问synchronized方法,当一个线程调用一个synchronized方法时,其他线程想要再调用该方法,或调用该类其他synchronized方法时会被阻塞,但可以调用其他非synchronized方法
2.修饰代码块(锁定某个对象或当前对象)
synchronized(this) {
代码
}
总结:无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。
进程是线程的容器,不同进程间相互独立,同一进程不同线程间资源共享。
进程间通信需要特殊方法,比如管道,线程间通信可以通过共享变量。
java有两种方法创建线程,优先使用Runnable接口,因为java只支持单继承。
简单的线程调度:
常用方法:
sleep()是静态方法。
重写run()方法不能throws Exception。
终止线程最好方法:可以设置一个boolean变量。
synchronized
1.修饰方法放到public后面(不能被继承)
同一时间只有一个线程可以访问synchronized方法,当一个线程调用一个synchronized方法时,其他线程想要再调用该方法,或调用该类其他synchronized方法时会被阻塞,但可以调用其他非synchronized方法
2.修饰代码块(锁定某个对象或当前对象)
synchronized(this) {
代码
}
总结:无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。
相关文章推荐
- Java线程入门教程 mingjava [原作]
- Java线程控制的图像分割与合成
- java线程的缺陷 选择自 df_world 的 Blog
- Java 理论与实践:嗨,我的线程到哪里去了?
- Java开发中的线程安全选择与Swing[Z]
- java学习日记(线程)
- 如果我是国王:关于解决 Java 编程语言线程问题的建议
- 请教:在java中如何实现线程的函数互斥调用,用synchronized好像实现不了
- Java线程模型缺陷研究
- 驯服Java线程(二)
- Java线程及同步(synchronized)样例代码
- Java 101之线程基础
- 介绍JAVA的线程、线程类及Runnable (3)
- java线程的缺陷
- Java、C#线程模型分析对比
- [导入]Java线程的深入探讨
- Java线程及同步(synchronized)样例代码
- Java中的线程
- [例程] 挑战:中断Java线程 (zt zdnet.com)
- java线程并发包util.concurrent的研究(一)