`

java 线程

    博客分类:
  • Java
 
阅读更多

 

线程:线程并行;方法调用串行

 

1、main方法为主线程。

 

2、thread 类的start方法为唯一启动一个新线程的方法,若定义了一个runnable接口的

 

实现类R,但是没有new thread(R r).start(),而只是R.run()则并没有启动新的

 

线程而只是方法调用,属于一个线程内的。

 

3、如果可以使用runnable接口则不用thread类,因为类只能继承自一个类,但是可以实

 

现多个接口,所以runnable更为灵活、实用

 

4、start()后表示线程进入就绪状态,开始排队。

 

5、就绪、运行、阻塞三个状态(活的)

 

6、优先级setPriority、是否活着isAlive、睡眠sleep(是静态方法,就是暂停执行,注

 

意一定要捕获异常interruption,thread.interrupt()方法会进去此异常)、yield让出

 

cpu,进入就绪队列等待调度、join合并线程,调用某线程的该方法,将当前线程和该线

 

程合并,即等待该线程结束后,再恢复当前线程的运行,相当于方法调用(串行)。

 

7、wait、notify、notifyAll

 

8、停止一个线程的方法:

尽量不用stop;不推荐使用interrupt;最好使用while循环判断。

 

9、run方法结束,就表示线程结束了。所以一般来讲,run方法都有循环。

 

10、同步

 

a.要同步某段代码,只需要锁定(public synchronized void fun(){synchronized(this){。。。任意代码}})

b.执行某个方法时,当前对象被锁定(public synchronized void fun(){})

c.注意想要锁定某对象如a=10;则很有必要锁定所有修改a的方法

 

11、wait后,锁就不属于自己了,等notify之后再找回该锁。

 

12、notify叫醒属于当前对象的其它wait的线程

 

13、生产者、消费者(wait notify)

 

14、线程池

       ExecutorService exec = Executors.newCacheThreadBool();

       exex.execute(new RunableImpl());

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics