初识JAVA5(线程)
来源:互联网 发布:网站编程入门 编辑:程序博客网 时间:2024/06/05 09:01
1.Thread类和Runnable接口在java.lang下,可以用来创建多线程程序。
2.调用一个线程的时候需要创建一个类去继承Thread类,并且实例化的时候,对象要用.start()去启动,不是调用里面的方法名字启动:下图声明了两个A类,就是两个线程。
一定要有一个无参无返回值的run方法,是start后要运行的,run方法里面是真正的线程语句。
3.Runnable接口里面有抽象方法run();
创建类去实现它。上图的B不能使用start(),如果创建了类实例化Runnable接口,那么
就必须用Thread类去包装实例化对象,最后通过Thread的对象启动多线程:
4.中断线程
但其实用一些变量去限制也可以中断线程,比如上图中for里的i小于100,这就是个终止线程的条件。
5.两种线程创建方式比较:
6. 线程的生命周期
7.线程的状态
阻塞事件有sleep状态。
例如:Thread.currentThread().sleep(2000)使进程休眠2秒。也就是Blocked。
System.out.println(Thread.current.isAlive());输出线程现在的转态。
8.调度和优先级
用 对象名.setPriority(MIN_PRIORITY / MAX_PRIORITY / NORMAL_PRIORITY);设置优先级。
9.yield()让出时间片
比如k1线程执行了,遇到yield(),则它会等待k2。就会变成一个线程执行,另一个线程等待,两个结果交替出现。
10.控制线程(join()方法)
写在main()方法中的程序叫做主线程,不写在里面的都叫做第二线程(副线程)。
2行:要想使用join();必须抛出异常,所以throws Exception;
这段代码有三个线程,主线程,新线程,join线程,当join线程执行时,主线程不执行,新线程也属于副线程,所以只有新线程和join线程抢时间片。
11.守护线程
将setDaemon设成true就可以标记成守护线程。false就是用户方法。
12.线程同步synchronized
当两个人同时对一个银行账户进行取钱的时候,账户里只有100,可是俩人每人取100,如果同时操作,结果可能取出200。这是不允许的。
可以如下方法解决:
加锁—–>修改完成—->释放锁
这样可以防止对一个代码段同时进行操作。
synchronized(对象名)意思就是给对象锁上,同步下面的代码段。
第二种同步,方法同步:
- 初识JAVA5(线程)
- Java5 并发线程学习
- java5线程并发库
- JAVA5线程池使用
- JAVA5线程池使用
- Java5线程池
- java5中的线程同步
- JAVA5 线程新特性
- java5 线程池
- java5 线程并发库
- Java线程(初识)
- (8)java5线程 Callable与Future的应用
- (8)java5线程 Callable与Future的应用
- Java5线程池潜规则研究
- Java5 多线程(二)--线程池
- Java5 多线程(二)--线程池
- Java5实现的线程池
- java5中的线程池简介。
- 解析Tomcat处理请求的类Connector<1>
- 网络流习题
- Git远程操作详解
- SIFT算法详解
- Emgucv SURF特征点的寻找和匹配
- 初识JAVA5(线程)
- What's New in Qt 5.5 5.4,以及5.5 所有module
- OpenGL帧缓存对象(FBO:Frame Buffer Object)
- SIFT/SURF算法的深入剖析——谈SIFT的精妙与不足
- jsPlumb 学习笔记
- 开博啦
- HTTP 协议之压缩 http://kb.cnblogs.com/page/163781/
- 【Java】Hello World
- hdu 5422 Rikka with Graph