Java main方法如何弄清进程问题

开发 后端
Java main方法不断的进行相关问题如何才能解决。在不断的学习中我们还是需要看看如何才能掌握相关的语言语法。希望大家有所收获。

Java main方法需要我们不断的学习,下面我们就看看如何才能更好的使用呢?首先我们来看看架构上的问题。随着计算机技术的发展,编程模型也越来越复杂多样化。

但多线程编程模型是目前计算机系统架构的最终模型。随着CPU主频的不断攀升,X86架构的硬件已经成为瓶,在这种架构的CPU主频***为4G。事实上目前3.6G主频的CPU已经接近了顶峰。#t#

如果不能从根本上更新当前CPU的架构(在很长一段时间内还不太可能),那么继续提高CPU性能的方法就是超线程CPU模式。那么,作业系统、应用程序要发挥CPU的***性能,就是要改变到以多线程编程模型为主的并行处理系统和并发式应用程序。

所以,掌握多线程编程模型,不仅是目前提高应用性能的手段,更是下一代编程模型的核心思想。多线程编程的目的,就是"***限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O,OEMBIOS等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上说,这就是多线程编程的最终目的。

***需要弄清的问题

如同程序和进程的区别,要掌握多线程编程,***要弄清的问题是:线程对象和线程的区别。

线程对象是可以产生线程的对象。比如在java平台中Thread对象,Runnable对象。线程,是指正在执行的一个指点令序列。在java平台上是指从一个线程对象的start()开始,运行run方法体中的那一段相对独立的过程。

鉴于作者的水平,无法用更确切的词汇来描述它们的定义。但这两个有本质区别的概念请初学者细细体会,随着介绍的深入和例程分析的增加,就会慢慢明白它们所代表的真实含义。

天下难事必始于易,天下大事必始于细。

让我们先从最简单的"单线程"来入手:(1)带引号说明只是相对而言的单线程,(2)基于java。

 

  1. class BeginClass{  
  2. public static void main(String[] args){  
  3. for(int i=0;i<100;i++)  
  4. System.out.println("Hello,World!");  
  5. }  
  6. }  

如果我们成功编译了该java文件,然后在命令行上敲入:

 

  1. java BeginClass 

现在发生了什么呢?每一个java程序员,从他开始学习java的***分钟里都会接触到这个问题,但是,你知道它到底发生发什么?

JVM进程被启动,在同一个JVM进程中,有且只有一个进程,就是它自己。然后在这个JVM环境中,所有程序的运行都是以线程来运行。JVM***会产生一个主线程,由它来运行指定程序的入口点。在这个程序中,就是主线程从Java main方法开始运行。当main方法结束后,主线程运行完成。JVM进程也随之退出。

我们看到的是一个主线程在运行main方法,这样的只有一个线程执行程序逻辑的流程我们称

之为单线程。这是JVM提供给我们的单线程环境,事实上,JVM底层还至少有垃圾回收这样的后台线程以及其它非java线程,但这些线程对我们而言不可访问,我们只认为它是单线程的。

主线程是JVM自己启动的,在这里它不是从线程对象产生的。在这个线程中,它运行了main方法这个指令序列。理解它,但它没有更多可以研究的内容。

接触多线程

 

  1. class MyThread extends Thread{  
  2. public void run(){  
  3. System.out.println("Thread say:Hello,World!");  
  4. }  
  5. }  
  6. public class MoreThreads{  
  7. public static void main(String[] args){  
  8. new MyThread();  
  9. new MyThread().start();  
  10. System.out.println("Main say:Hello,World");  
  11. }  
  12. }  

 

执行这个程序,main方法***行产生了一个线程对象,但并没有线程启动。

Java main方法第二行产生了一个线程对象,并启动了一个线程。

Java main方法第三行,产生并启动一个线程后,主线程自己也继续执行其它语句。

我们先不研究Thread对象的具体内容,稍微来回想一下上面的两个概念,线程对象和线程。在Java main方法中,线程对象是JVM产生的一个普通的Object子类。而线程是CPU分配给这个对象的一个运行过程。我们说的这个线程在干什么,不是说一个线程对象在干什么,而是这个运行过程在干什么。如果一时想不明白,不要急,但你要记得它们不是一回事就行了。

责任编辑:张浩 来源: IT168
相关推荐

2020-07-29 15:01:50

JVMGCJDK

2015-11-12 09:17:30

Java Main执行

2013-01-30 15:07:59

Shell

2010-02-01 10:58:29

云计算云安全私有云

2015-08-19 09:35:49

Java main面试题

2013-01-15 10:14:19

云安全私有云公有云

2013-01-14 15:30:22

云安全

2012-05-28 10:06:05

项目开发项目管理开发

2009-09-04 18:16:19

C# Main参数C# Main

2009-08-31 16:51:11

C# Main()方法

2020-10-29 07:05:30

Main函数Python

2019-06-10 19:00:23

Cmain函数编程语言

2020-07-10 09:56:01

Java参数变量

2020-05-07 10:57:51

物联网

2020-12-30 07:08:27

Java方法测试

2009-09-07 03:07:11

C# Main方法

2021-12-28 14:53:47

Java编程语言

2021-05-09 22:26:36

Python函数变量

2018-11-13 09:25:02

Linux系统管理

2010-06-13 15:17:16

Linux 查看进程
点赞
收藏

51CTO技术栈公众号