JAVA多线程

来源:互联网 发布:闲鱼平台优化 编辑:程序博客网 时间:2024/06/05 20:57

linux中fork--子进程是从哪里开始运行


通过在Thread的子类覆盖run()这个方法然后调用Thread的无参数构造函数(Thread t =new Thread())可以创建新的线程。


一旦Thread对象的run()方法完成之后,该Thread就不能在重新启动(即Thread.start()).

还有一点最重要的就是使用实现Runnable接口的方式创建的线程可以处理同一资源,从而实现资源的共享.


很容易误解锁是配在用synchronizedb标记的方法上,但事实上不是配在方法上的,而是配在对象上。

每个JAVA对象都有一个锁,每个锁只有一个钥匙。

如果对象有两个同步化的方法,就表示两个线程无法进入同一个方法,也表示两个线程无法进入不同的方法。

 

什么时候要同步化。

同步化的意义是指定某段工作要在不能分割的状态下执行


为程序段加上同步化的一些方法:1

1.直接在方法上声明public synchronized void fun(){程序段}

2.用synchronized块:


锁在类上(类级别的锁):

synchronized(A.class){

程序段

}


锁在对象上(对象级别的锁):

synchronized(new Object()或者this){

程序段

}


要让对象在线程上有足够的安全性,就要判断出那些指令不能被分割执行。







可见/访问性在同一类中同一包中不同包中 同一包子类中 不同包子类中  public yes yes yes yes yes protected  yes yes no yes yes package  yes yes no yes no private yes no no no no

 


可见/访问性在同一类中同一包中不同包中 同一包子类中 不同包子类中  public yes yes yes yes yes protected  yes yes no yes yes package  yes yes no yes no private yes no no no no

 

0 0
原创粉丝点击