线程Sleep不放弃锁
来源:互联网 发布:珠江旭景佳园 网络 编辑:程序博客网 时间:2024/04/29 18:00
总结: 1. run不新启线程,还在老线程中执行,启动新线程只能start
2. sleep不释放锁,wait释放。</strong></span>
3. synchonrized 使用时最好为synchronized(this) {.....}
package ThreadTest;public class MockTest {public static void main(String[] args) {Test t1 = new Test() ;Thread tt =new Thread(t1) ;tt.run() ;//tt.start() ;for(int k=0;k<5;k++){t1.addA() ; System.out.println(" Main Thread Add a: " +t1.a);}}}class Test implements Runnable{public int a = 0 ;public void run() {synchronized (this) {while(a<4){ System.out.println("a<4 " + Thread.currentThread().getName()+"--a..." +a); try {Thread.sleep(1000);// this.wait(1000) ;} catch (InterruptedException e) {e.printStackTrace();}}}System.out.println(" a>4...." + Thread.currentThread().getName());} public synchronized void addA(){ a++ ; }}
有个问题没搞清楚。。。。
1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止, 而CPU再运行其它线程, 2.run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码: 而如果直接用Run方法, 这只是调用一个方法而已, 程序中依然只有主线程--这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。
0 0
- 线程Sleep不放弃锁
- sleep不放弃锁,wait放弃实例
- java线程、锁、sleep、wait
- 不放弃!
- 不放弃
- 不放弃
- 不放弃
- 不抛弃,不放弃!
- 不抛弃,不放弃
- 不抛弃,不放弃
- 不放弃,不抛弃
- 不抛弃,不放弃
- 不抛弃,不放弃
- 不抛弃,不放弃
- 不抛弃,不放弃
- 不使用Sleep,如何让线程没任务时不占用CPU资源
- 我不放弃~
- 我不放弃
- Android中的Margin和Padding及Android支持的长度单位
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
- ubuntu上搭建openfire服务器
- UIScrollView 原理
- CentOS下查看apache,php,mysql版本信息
- 线程Sleep不放弃锁
- SQL 语句执行顺序
- aidl
- ASP.NET MVC的过滤器
- 山西甘肃云南树脂瓦生产厂家哪家好?
- openwrt lcui
- iOS app加密&探究爱加密iOS app加密原理
- 不要在你的邮件中用这些词
- Android Service完全解析,关于服务你所需知道的一切(上)