`
leichenlei
  • 浏览: 125350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【JAVA多线程】认识java多线程

阅读更多

一、什么是线程?

线程是虚拟的东西,看不见,摸不着,就知道可以这样触摸到线程:在java中   new Thread 或者实现Runnable,这样就创建了一个线程。多线程那就是可以创建很多线程呗。

我把线程想象成一条线(谁让它叫线程呢):

 

 

多线程:

 

然后看过一些虚拟机的东西,按照虚拟机的说法,每个线程都背着一个筐,比较官方的说法管这个筐叫线程栈,说到栈就是什么“后进先出”,具体为什么还不知道,线程就变成下面的样子了。

 



 

每个线程有5个状态:

 



 


新:  就是new了一个线程对象

运行:  就是执行start

死:   线程执行结束了。

等待 阻塞 睡眠:      就是 调用了 wait  suspend  sleep方法或其他情况。

 

这里唯一不好理解的就是可运行状态,可运行就是说调用了start但是由于锁或者优先级等原因,线程并没有执行;也可以这样理解,同时启动100个线程,100个中不是同时开始执行的,由于某种有些还处于可运行状态,只有一部分运行了。


 

 

  • 大小: 372 Bytes
  • 大小: 629 Bytes
  • 大小: 658 Bytes
  • 大小: 7.4 KB
分享到:
评论
3 楼 leichenlei 2012-09-24  
ynztpwl 写道
磊仔问下,多核CPU下java线程怎么运行的?
会有两个线程在同一时间点运行呢?
还是两个核同时支持一个线程,但同一个时间点还是只有一个线程在运行



这个得看《操作系统》啊,我准备看,还没看呢,
不过《java并发》里,有这么一段:

在并发编程中,有两个基本执行单元:进程和线程。在java程序语言中,并发编程主要与线程有关。然而,进程也是重要的。

一个计算机系统通常有很多活动的进程和线程。 在只有一个处理核心的系统上,在任何时间都只执行一个线程。被分配到进程和线程之间的处理时间叫做时间截分。
越来越过的计算机拥有多个处理器或者一个处理器多个执行核心。这很大的提升了进程和线程的并发处理能力---但是,在没有多个处理器的系统上并发也是可以的。
2 楼 ynztpwl 2012-09-24  
磊仔问下,多核CPU下java线程怎么运行的?
会有两个线程在同一时间点运行呢?
还是两个核同时支持一个线程,但同一个时间点还是只有一个线程在运行
1 楼 gtandsn 2012-08-27  
楼主比喻很形象呀

相关推荐

Global site tag (gtag.js) - Google Analytics