最近在看java多线程的东西,做一下个人总结:
java多线程说白了就是让多个对象同步执行,
package com.bossoft.boz;
public class DosomeThing extends Thread {
public DosomeThing(String name){
super.setName(name);
}
public void run(){
for (int i=0; i<200; i++){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
public static void main(String[] args) throws InterruptedException{
Thread d1 = new DosomeThing("张三");
Thread d2 = new DosomeThing("李四");
d1.start();
d2.start();
//d2.join();
//d2.sleep(1000);
}
}
上段代码有三个线程执行,main(主线程),d1,d2
执行d1.start();表示让d1进入可运行状态,但是并不表示d1里面的run方法就一定会执行。因为没有进入运行状态。
一个对象要多线程执行,则相对应的类必须是extends thread或者importments runnable接口的,线程的名字可以手动指定,也可以系统自动赋值,通常Thread.currentThread().getName()得到线程的名称。但是必须是thread类或者他的子类才会有setName方法,runnable是个接口,没有setName()方法。要是你的对象是importments runnable则将Thread t1 = new Thread(d1);t1.setName()就可以了。
围绕多线程的一些方法也无非是
start:开始,线程进入可运行状态
join:当前线程优先执行,从某种意义上说就是同步了
sleep:让线程休眠,线程还是可运行状态的
setPriority:设置线程的优先级,cup一般给高优先级的分配时间多,但是并不是高优先级的就一定先执行,别妄想这样控制cpu
synchronized:是线程同步的标志,
6)、线程睡眠时,它所持的任何锁都不会释放。
理解时只要知道,锁是用来对付对象的(当然是包括方法啦)。