黑马程序员——JAVA多线程编程及syncronized关键字使用
来源:互联网 发布:windows7淘宝 编辑:程序博客网 时间:2024/06/05 20:15
JAVA多线程编程
在java中使用多线程比C++要方便很多。
Thread类是用来实现线程的类,其中的run()方法就是线程在启动之后要执行的程序。
具体实现有两种方式:
一. 继承Thread类来实现多线程
class SubProm extends Thread{ public void run() { //线程程序 }}这里必须要复写run()方法,不然线程什么都不执行
同时Thread类中构造函数是可以传递String对象的作为线程的名字的,在继承的时候也可以利用这个来创建构造函数
class SubProm extends Thread{ SubProm(String name) { super(name); } public void run() { //线程程序 }}
使用方法:
使用这种方法的时候,只要新建一个子类的对象,然后调用start()方法就可以了
SubProm sub1=new SubProm("线程1");sub1.start();这样线程就被启动了
二.实现runable接口来实现多线程
class Sub implements Runnable{ public void run(){//程序代码}}
使用方法:
使用这种方式来实现线程需要先创建一个Thread对象然后把实现了接口的对象传递给他
Sub sub1=new Sub();Thread xian1=new Thread(sub1);xian1.start();
JAVA进行多线程编程时,一般使用syncronized来解决共享数据的问题,有两种使用方式。
一. 构建syncronized块
syncronized块放置在被多线程执行的函数中。
syncronized(object){ functiong();}object是一个用来作为锁旗标的对象。可以是任意类型的对象。
当有一个线程进入这个函数的时候,如果想要执行这个块,就必须要检验一下这个对象,如果没有置锁就可以执行,同时将这个对象置锁。
当另外有一个线程要访问这个块的时候,也要先检验一下这个锁,如果被其他线程置锁了,就不会进去执行。
二.syncronized函数
在函数体的前面使用syncronized同样有效。
public syncronized void func() { functiong();}这样整个函数就会变成同步块。
对于同步函数所使用的锁是谁的问题:
1.如果函数不是静态的,那么锁计时this
2.如果函数是静态函数,那么锁就是字节码文件对象,也就是 类名.class
0 0
- 黑马程序员——JAVA多线程编程及syncronized关键字使用
- Java syncronized关键字用法详解
- Java syncronized关键字用法详解
- 黑马程序员——java中的多线程编程
- 黑马程序员——Java多线程与并发编程
- 黑马程序员—基础—Java多线程编程详解
- 黑马程序员——Java 基础:this 关键字的使用
- 黑马程序员—java多线程
- 黑马程序员—JAVA多线程
- 黑马程序员—java多线程
- 黑马程序员—Java多线程
- 黑马程序员—java多线程
- 黑马程序员—Java多线程
- 黑马程序员——【java】static关键字
- 黑马程序员——java中的关键字
- 黑马程序员—Java中finally关键字
- Java多线程之syncronized(一)
- Java多线程之syncronized(二)
- Android开发之颜色总结
- 毛细管网地暖的优势
- IOS 本地缓存
- 飞鸽传书 CFile 大量地对文件进行操作
- Wordpress 打开首页老是加载themes.googleusercontent.com 的解决办法
- 黑马程序员——JAVA多线程编程及syncronized关键字使用
- select函数详解及实例分析
- PyQt基本操作
- Linux 打开 Xbrowser 可视化操作界面
- VS2008 sp1中sprintf的警告:" use _CRT_SECURE_NO_WARNINGS"
- 摩托车继承自行车和机动车
- 毛细管网
- 宇宙中最大的神秘结构被发现 跨度达40亿光年
- NSString、Char* 、NSData之间的转换