黑马程序员_多线程_2
来源:互联网 发布:2015珠三角gdp数据 编辑:程序博客网 时间:2024/06/05 22:46
——- android培训、java培训、期待与您交流! ———-
计算机CPU的运行原理
我们电脑上有很多的程序在同时进行,就好像cpu在同时处理这所以程序一样。但是,在一个时刻,单核的cpu只能运行一个程序。而我们看到的同时运行效果,只是cpu在多个进程间做着快速切换动作。 而cpu执行哪个程序,是毫无规律性的。这也是多线程的一个特性:随机性。哪个线程被cpu执行,或者说抢到了cpu的执行权,哪个线程就执行。而cpu不会只执行一个,当执行一个一会后,又会去执行另一个,或者说另一个抢走了cpu的执行权。至于究竟是怎么样执行的,只能由cpu决定
线程状态:
新建:start()
运行:具备执行资格,同时具备执行权;
冻结:sleep(time),wait()—notify()唤醒;线程释放了执行权,同时释放执行资格;
临时阻塞状态:线程具备cpu的执行资格,没有cpu的执行权;
消亡:stop()
————————————————————————————
sleep方法需要指定睡眠时间,单位是毫秒。
冻结与运行之间的状态:准备就绪。具备了执行资格,但是没有执行权。被创建:等待启动,调用start启动。
运行状态:具有执行资格和执行权。 临时状态(阻塞):有执行资格,但是没有执行权。 冻结状态:遇到sleep(time)方法和wait()方法时,失去执行资格和执行权,sleep方法时间到或者调用notify()方法时,获得执行资格,变为临时状态。 消忙状态:stop()方法,或者run方法结束。
注:当已经从创建状态到了运行状态,再次调用start()方法时,就失去意义了,java运行时会提示线程状态异常
sleep方法需要指定睡眠时间,单位是毫秒。
冻结与运行之间的状态:准备就绪。具备了执行资格,但是没有执行权。被创建:等待启动,调用start启动。
运行状态:具有执行资格和执行权。 临时状态(阻塞):有执行资格,但是没有执行权。 冻结状态:遇到sleep(time)方法和wait()方法时,失去执行资格和执行权,sleep方法时间到或者调用notify()方法时,获得执行资格,变为临时状态。 消忙状态:stop()方法,或者run方法结束。
注:当已经从创建状态到了运行状态,再次调用start()方法时,就失去意义了,java运行时会提示线程状态异常
t1.start();
t2.start(); for(int x=0; x<60; x++){ System.out.println("main....."+x); } }
}
线程的安全
导致安全问题的出现的原因: 1.多个线程访问出现延迟 2.线程随机性 线程安全问题在理想状态下,不容易出现,但是一旦出现对软件的影响是非常大的解决方法:同步(synchronized) 格式: synchronized(对象){ 需要同步的代码; }
同步可以解决安全问题的根本原因就是在那个对象上,该对象如同锁的功能。
0 0
- 黑马程序员_多线程_2
- 黑马程序员_JAVA多线程_2
- 黑马程序员_基础加强_2
- 黑马程序员_内部类_2
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- Error:Flash Download Failed-"Cortex-M3"
- iOS 开发中常用的宏定义
- "vtable for __cxxabiv1::__class_type_info", referenced from:
- Linux 基本操作练习
- 用LayerColor实现消灭星星
- 黑马程序员_多线程_2
- Java Properties 类读取配置文件信息
- 黑马程序员--C基础--循环结构总结
- Android应用Design Support Library完全使用实例
- Jquery下Ajax与PHP数据交换
- Java并发编程:线程池的使用
- Hadoop加zookeeper搭建高可靠集群
- TrinityCore BossAI
- GridView其实是一个table,这里使用js循环table,代码如下: