标签:
1.进程和线程
进程: 运行一个速度,程序在内存分配了运行空间
线程: 在进程中还运行,多个线程之间可以相互的切换。
问题 进程和线程的关系?
进程包括线程。
2。单线程和多线程 (JAVA抢占)
单线程:只有一条路径,必须等第一个执行了才能执行第二个。 比如 排队吃饭。。。。
多线程: 有多条路径 。。。 比如 食堂排队的多个窗口。
3.线程分为主线程和子线程**
主线程就相当于游戏中的主要任务。
子线程就相当于游戏中的分支任务。
列题:
4.线程的优先级别
Java中共有10个级别,1到10个级别
从低到高,但它不能与操作系统很好的兼容,比如Winw2000e 7个优先级别,并且不固定的所有希望能移植到各个的平台中,那么建议使用 Max-PRIOKIT
MIN-PRIOKIT
NORN-PRIOKIT
注: 高的级别是获得较多的执行机会
低的级别是获得较少的执行机会
5.问题区
问题 : 为什么一到要复写Run方法??
Start方法自动调用了run方法, run方法中可以自动加入自己想要得一些功能。
问题 : 直接调用run方法和调用stat的方法的区别?
Run()方法: 普通的方法 不能启动线程
Start()方法 : 启动一个线程,自动的去调用run方法
public final void join()
throws InterruptedException
等待该线程终止。
等线程终止 该线程结束后,才能往下执行
public static void yield()暂停当前正在执行的线程对象,并执行其他线程。
礼让,暂停当前正在执行的程序对象,并让其他线程执行让给相同优先级的或者是更高的。
public static void sleep(long millis,int nanos)
throws InterruptedException在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权
守护线程
setDaemon(布尔值) 设置是否为守护线程
也就是前台完成 后台才能完成
比如:垃圾回收机制
结束线程
1) 修改标志
2) interrupt()
3)public void interrupt() 中断线程。
如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException。
3) 引发异常
注: 尽量不要使用 stop (太过于霸道 会直接终止所有的运行 )和
并发访问的问题
数据的不准确性
Synchronized 同步
Synchronized (this)同步块; this同步当前对象
Synchronized 同步方法
死锁 !
定义:死锁是进程死锁的简称,
例如:
在一条河上有一座桥,桥面较窄,只能容纳一辆汽车通过,无法让两辆汽车并行。如果有两辆汽车A和B分别由桥的两端驶上该桥,则对于A车来说,它走过桥面左面的一段路(即占有了桥的一部分资源),要想过桥还须等待B车让出右边的桥面,此时A车不能前进;对于B车来说,它走过桥面右边的一段路(即占有了桥的一部分资源),要想过桥还须等待A车让出左边的桥面,此时B车也不能前进。两边的车都不倒车,结果造成互相等待对方让出桥面,但是谁也不让路,就会无休止地等下去
线程的生命周期
新建: 创建线程对象
就绪: 有执行资格,没有执行权,start()
运行 : 有执行资格,有执行权
死亡: 线程对象变为垃圾,等待回收
JAVA学习日志(线程)
标签:
原文地址:http://blog.csdn.net/teng_ling/article/details/51246216