java线程相关

做了一个跟多线程相关的oj。遇到几个问题如下:

1 同一个线程不能多次start(),否则出发异常,如果需要多次启动start(),把继承thread改成调用runnable接口,然后把thread.start()写成new thread(thread).start()

2 启用多线程时,线程不ing不是严格意义上的同时执行的,实际上cpu处理线程的时候并不是真正的同时进行,而是执行某个线程一段时间,然后在执行其他线程一段时间,一直这样循环下去,执行顺序和线程的优先级有关系,在线程优先级都相同的情况下,执行权是随机分配的,一般情况下多线程并发访问数据的时候,要做同步处理,避免数据出现紊乱。

比如同步机制可以使用synchronized关键字实现。

java每个对象都有一个锁,或者是监视器,当用synchronized修饰一个方法时,一个对象进入这个方法后,其他线程对象就不能再访问这个synchronized方法,直到锁释放。

一种是用synchronized关键字修饰方法,一种是锁代码块

public synchronized method(){}

另一种

Object obj = new Object();

public void method(){

synchronized (obj){

.......

}

}

我在oj中使用的是对对象锁代码块


这是我遇到的关于线程的问题,我在网上看懂一些关于多线程的博文,很好,但是还有些问题喔在实际中还没遇到,暂时就不总结了。


还有种同步处理,就是sleep线程,还有


博文地址:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html

你可能感兴趣的:(java线程相关)