java实现多线程的两种方法(收藏)

来源:互联网 发布:知乎 用的什么编辑器 编辑:程序博客网 时间:2024/06/05 19:03

 

 

java

有点不同,

实现多线程有两种方式:

继承类

Thread

 

 

实现接口

Runnable

 

thread

类有一个

run

函数,它是线程的入口,当启动一个新线程是,就从这个

函数开始执行;

 

View Code  

注意线程是调用

start()

来开始的。

 

Runnable

有一点点不同,实现这个类的时候和

Thread

一样,但是创建线程的时

候还是放入一个

Thread

中创建:

 

View Code  

 Thread

Runnable

基本用法都是差不多的,但是从上面的例子可以看出,

Runnable

比较方便进程间数据的共享(公用了一个

cnt

计量单位),所以一样

都使用

Runnable

 

线程常用的几个函数:

 

join():  

强制等待线程执行完毕。

 

例如如果在主线程里面加一句

ta.join(),

那么主线程会一直等待

ta

执行返回才接着执行后面的代码。

但是在

join

之前已

经创建的其他线程,则不会受影响,继续执行。

 

interrupt(): 

挺有意思的一个函数,如果线程在执行

sleep

()函数

 

,则打断

它(以让

sleep

()函数抛出一个异常的方式中断),执行后面的语句。

 

setDaemon(true):

设置为守护进程。

守护进程的优先级是最低的,

如果一个程序

只剩下守护进程,那么它就中断所有守护进程而退出。

 

最常见的情况是,如果

创建的全部是守护进程,那么当主函数

main

执行完毕后,就立刻终止所有线程

而退出。

 

synchronized

同步符号用法:

 

保证同一时刻,某段代码只有一个线程在执行。

 

wait()

notify(),notifyAll():

让线程等待

/

唤醒。这两个函数比较奇怪,目

前我不是很熟练,

要配合

synchronized

符号使用,

请看下面这个生产者

-

消费者

例子(网上直接贴来的,写的挺好的)

原创粉丝点击