多线程
1. main()方法就是一个线程
2. 多线程中会经常用到匿名内部类,在写匿名内部类的时候,调用的变量应该是final类型的!
3. **.join() //等待线程终止。到底怎么用????????????????
4. java中,线程分为两类:用户线程和守护线程
(线程).setDeamon(true)方法定义守护线程
一般情况下,我们都在主方法中调用其他方法,这是主方法应该作为主线程,守护线程的生命周期应该同主线程的生命周期一致,所以当主线程结束时,守护线程也随之结束,我们定义守护线程的目的就是不让在主线程结束后守护线程还在执行,那样的程序就不是我们想要的了
5. 线程和进程的区别:
线程是共享资源的,线程是资源的小分支
进程是独享资源的
6. 线程的同步
例:
final Counter con1=new Counter();
//创建两个同步线程
Thread th1=new Thread(new Runnable(){
@Override
public void run(){
synchronized(con1){ //设置为同步
System.out.println("现在c值为:" +con1.to());
con1.increment();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
System.out.println("++后c的值是:"+con1.to());
}
}
});
Thread th2=new Thread(new Runnable(){
@Override
public void run(){
synchronized(con1){ //设置为同步
con1.decrement();
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
}
}
}
});
我们还可以在创建方法的时候把方法设置为同步方法。那样,当一个方法被访问的时候,只有这个方法执行结束,其他同步方法才能被访问、执行
例: