精华内容
下载资源
问答
  • Java主线程

    2021-03-09 19:24:45
    Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种...

    当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:

    它是产生其他子线程的线程;

    通常它必须最后完成执行,因为它执行各种关闭动作。

    尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你必须调用方法currentThread()获得它的一个引用,currentThread()是Thread类的公有的静态成员。它的通常形式如下:

    static Thread currentThread( )

    该方法返回一个调用它的线程的引用。一旦你获得主线程的引用,你就可以像控制其他线程那样控制主线程。

    让我们从复习下面例题开始:

    // Controlling the main Thread.

    class CurrentThreadDemo {

    public static void main(String args[]) {

    Thread t = Thread.currentThread();

    System.out.println(“Current thread: ” + t);

    // change the name of the thread

    t.setName(“My Thread”);

    System.out.println(“After name change: ” + t);

    try {

    for(int n = 5; n > 0; n–) {

    System.out.println(n);

    Thread.sleep(1000);

    }

    } catch (InterruptedException e) {

    System.out.println(“Main thread interrupted”);

    }

    }

    }

    在本程序中,当前线程(自然是主线程)的引用通过调用currentThread()获得,该引用保存在局部变量t中。然后,程序显示了线程的信息。接着程序调用setName()改变线程的内部名称。线程信息又被显示。然后,一个循环数从5开始递减,每数一次暂停一秒。暂停是由sleep()方法来完成的。Sleep()语句明确规定延迟时间是1毫秒。注意循环外的try/catch块。

    Thread类的sleep()方法可能引发一个InterruptedException异常。这种情形会在其他线程想要打搅沉睡线程时发生。本例只是打印了它是否被打断的消息。在实际的程序中,你必须灵活处理此类问题。下面是本程序的输出:

    Current thread: Thread[main,5,main]

    After name change: Thread[My Thread,5,main]

    5

    4

    3

    2

    1

    注意t作为语句println()中参数运用时输出的产生。该显示顺序:线程名称,优先级以及组的名称。默认情况下,主线程的名称是main。它的优先级是5,这也是默认值,main也是所属线程组的名称。一个线程组(thread group)是一种将线程作为一个整体集合的状态控制的数据结构。这个过程由专有的运行时环境来处理,在此就不赘述了。线程名改变后,t又被输出。这次,显示了新的线程名。

    让我们更仔细的研究程序中Thread类定义的方法。sleep()方法按照毫秒级的时间指示使线程从被调用到挂起。它的通常形式如下:

    static void sleep(long milliseconds) throws InterruptedException

    挂起的时间被明确定义为毫秒。该方法可能引发InterruptedException异常。

    sleep()方法还有第二种形式,显示如下,该方法允许你指定时间是以毫秒还是以纳秒为周期。

    static void sleep(long milliseconds, int nanoseconds) throws InterruptedException

    第二种形式仅当允许以纳秒为时间周期时可用。如上述程序所示,你可以用setName()设置线程名称,用getName()来获得线程名称(该过程在程序中没有体现)。这些方法都是Thread 类的成员,声明如下:

    final void setName(String threadName)

    final String getName( )

    这里,threadName 特指线程名称。

    展开全文
  • java主线程是什么

    2021-02-12 09:26:01
    java主线程是什么java应用程序中会有一个main函数,是作为某个类的方法出现的。当程序启动时,该函数就会第一个自动得到执行,并成为程序的主线程。就是说,main函数是一个应用的入口,也代表了这个应用主线程。下面...

    java主线程是什么

    java应用程序中会有一个main函数,是作为某个类的方法出现的。当程序启动时,该函数就会第一个自动得到执行,并成为程序的主线程。就是说,main函数是一个应用的入口,也代表了这个应用主线程。下面是小编为大家搜索整理的java主线程是什么,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!

    需要弄清的问题

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

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

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

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

    让我们先从最简单的"单线程"来入手:

    (1)带引号说明只是相对而言的单线程,

    (2)基于java。

    class BeginClass{

    public static void main(String[] args){

    for(int i=0;i<100;i++)

    System.out.println("Hello,World!");

    }

    }

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

    java BeginClass

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

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

    我们看到的是一个主线程在运行main方法,这样的只有一个线程执行程序逻辑的流程我们称之为单线程。这是JVM提供给我们的单线程环境,事实上,JVM底层还至少有垃圾回收这样的后台线程以及其它非java线程,但这些线程对我们而言不可访问,我们只认为它是单线程的。

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

    接触多线程

    class MyThread extends Thread{

    public void run(){

    System.out.println("Thread say:Hello,World!");

    }

    }

    public class MoreThreads{

    public static void main(String[] args){

    new MyThread();

    new MyThread().start();

    System.out.println("Main say:Hello,World");

    }

    }

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

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

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

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

    【java主线程是什么】相关文章:

    展开全文
  • JAVA主线程

    2021-03-09 06:07:53
    Java主线程 当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面: 它是产生其他子线程的线程; 通常它必须最后完成执行,因为...

    Java主线程 当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面: 它是产生其他子线程的线程; 通常它必须最后完成执行,因为它执行各种关闭动作。 尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你必须调用方法currentThread()获得它的一个引用,currentThread()是Thread类的公有的静态成员。它的通常形式如下: static Thread currentThread( ) 该方法返回一个调用它的线程的引用。一旦你获得主线程的引用,你就可以像控制其他线程那样控制主线程。 让我们从复习下面例题开始: // Controlling the main Thread. class CurrentThreadDemo {    public static void main(String args[]) {   Thread t = Thread.currentThread();   System.out.println("Current thread: " + t);   // change the name of the thread   t.setName("My Thread");   System.out.println("After name change: " + t);   try {    for(int n = 5; n > 0; n--) {  System.out.println(n);   Thread.sleep(1000);   }   } catch (InterruptedException e) {   System.out.println("Main thread interrupted");   }  } } 在本程序中,当前线程(自然是主线程)的引用通过调用currentThread()获得,该引用保存在局部变量t中。然后,程序显示了线程的信息。接着程序调用setName()改变线程的内部名称。线程信息又被显示。然后,一个循环数从5开始递减,每数一次暂停一秒。暂停是由sleep()方法来完成的。Sleep()语句明确规定延迟时间是1毫秒。注意循环外的try/catch块。 Thread类的sleep()方法可能引发一个InterruptedException异常。这种情形会在其他线程想要打搅沉睡线程时发生。本例只是打印了它是否被打断的消息。在实际的程序中,你必须灵活处理此类问题。下面是本程序的输出: Current thread: Thread[main,5,main] After name change: Thread[My Thread,5,main] 5 4 3 2 1 注意t作为语句println()中参数运用时输出的产生。该显示顺序:线程名称,优先级以及组的名称。默认情况下,主线程的名称是main。它的优先级是5,这也是默认值,main也是所属线程组的名称。一个线程组(thread group)是一种将线程作为一个整体集合的状态控制的数据结构。这个过程由专有的运行时环境来处理,在此就不赘述了。线程名改变后,t又被输出。这次,显示了新的线程名。 让我们更仔细的研究程序中Thread类定义的方法。sleep()方法按照毫秒级的时间指示使线程从被调用到挂起。它的通常形式如下: static void sleep(long milliseconds) throws InterruptedException 挂起的时间被明确定义为毫秒。该方法可能引发InterruptedException异常。 sleep()方法还有第二种形式,显示如下,该方法允许你指定时间是以毫秒还是以纳秒为周期。  static void sleep(long milliseconds, int nanoseconds) throws InterruptedException 第二种形式仅当允许以纳秒为时间周期时可用。如上述程序所示,你可以用setName()设置线程名称,用getName()来获得线程名称(该过程在程序中没有体现)。这些方法都是Thread 类的成员,声明如下: final void setName(String threadName)  final String getName( ) 这里,threadName 特指线程名称。

    展开全文
  • 什么是java主线程

    2021-03-10 02:28:19
    什么是java主线程java应用程序中会有一个main函数,是作为某个类的方法出现的。当程序启动时,该函数就会第一个自动得到执行,并成为程序的主线程。就是说,main函数是一个应用的入口,也代表了这个应用主线程。下面...

    什么是java主线程

    java应用程序中会有一个main函数,是作为某个类的方法出现的。当程序启动时,该函数就会第一个自动得到执行,并成为程序的主线程。就是说,main函数是一个应用的入口,也代表了这个应用主线程。下面是小编为大家搜索整理的java主线程是什么,希望能给大家带来帮助!更多精彩内容请及时关注我们考试网!

    需要弄清的问题

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

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

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

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

    让我们先从最简单的"单线程"来入手:

    (1)带引号说明只是相对而言的单线程,

    (2)基于java。

    class BeginClass{

    public static void main(String[] args){

    for(int i=0;i<100;i++)

    System.out.println("Hello,World!");

    }

    }

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

    java BeginClass

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

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

    我们看到的是一个主线程在运行main方法,这样的只有一个线程执行程序逻辑的流程我们称之为单线程。这是JVM提供给我们的单线程环境,事实上,JVM底层还至少有垃圾回收这样的后台线程以及其它非java线程,但这些线程对我们而言不可访问,我们只认为它是单线程的。

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

    接触多线程

    class MyThread extends Thread{

    public void run(){

    System.out.println("Thread say:Hello,World!");

    }

    }

    public class MoreThreads{

    public static void main(String[] args){

    new MyThread();

    new MyThread().start();

    System.out.println("Main say:Hello,World");

    }

    }

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

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

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

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

    【什么是java主线程】相关文章:

    展开全文
  • public class TestThread extends Thread{public void run(){System.out.println(this.getName() + "子线开始");try{// 子线休眠五秒Thread.sleep(5000);}catch (InterruptedException e){e.printStackTrace();}...
  • //子线程执行 System.out.println("主线程做自己的事情"); thread.join(); //等待子线程执行完毕,这里会阻塞 System.out.println("获取子线程返回结果:"+cRunnacle.getData()); } static final class ...
  • java中如果主线程关闭(main),那么创建的其它子线程还能运行不?我的例子:public class t {public static void main(String[] args) {System.out.println("kaishi");asd th = new asd();th.start();System.out....
  • 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线程的流程, 往往需要让主线程指定后, 等待子线程的完成. 这里有几种方式.站在主线程的角度, 我们可以分为主动式和被动式.主动式指主线程主动去检测...
  • publicclassTestThreadextendsThread{publicvoidrun(){System.out.println(this.getName()+"子线开始");try{//子线休眠五秒Thread.sleep(5000);}catch(InterruptedExceptione){e.printStackTrace();}System.out....
  • 人们常说:的错误“实现理想不是一蹴而就、一帆风顺的事情”,即理想的实现是一个过程,这是因为理想具有()说法数控车床加工对象有( )、下面数控车床可以加工精度要求高的回转体零件 ( )关于数控车床可以加工带...
  • main方法开始执行的时候,主线程已经创建好并在运行了。对于运行中的线程,调用Thread.setDaemon()会抛出异常Exception in thread "main" java.lang.IllegalThreadStateException。测试代码如下:publi...
  • 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线程的流程, 往往需要让主线程指定后, 等待子线程的完成. 这里有几种方式。 站在主线程的角度, 我们可以分为主动式和被动式. 主动式指主线程主动去...
  • java的CountDownLatch,内部其实就是计数器 /** * @author cmy * @date 2020/12/24 13:34 */ public class CountDownLatchTest { static CountDownLatch latch = null; public static void main(String[] ...
  • java主线程有几个

    2021-03-09 06:07:22
    主线程有一层while(true),这个循环是不断的扫描LinkedBlockingQueue是否有数据,有则交个任务子线程(也就是你这里定义的线程池)处理,而不是像你这样每个子任务线程都有一个while(true) ######这才是对的做法###...
  • 下面给出了一个join和interrupt互动的例子,还是主线程要join子线程。例:1.5.3_1class ThreadMark_to_win extends Thread {Thread mainT;int e;public void run() {for (int i = 0; i < 10; i++){try {Thread....
  • JAVA主线程Sleep以后,Eden不断增加问题实操结论 问题   今天在进行Demo实验的时候将Demo的主线程进行Sleep后,通过jvisualvm连接发现Eden堆的使用不断增大 实操 然后发现线程并不是只有我Java的主线程在活动 ...
  • 本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明:1、使用Thread的join()方法,join()方法会阻塞主线程继续向下执行。2、使用Java.util.concurrent中的CountDownLatch,是一个倒数计数器。初始化时先...
  • 您将需要将主线程置于其接收工作机制并等待工作的状态。这是一个简单的例子,设置主线程等待从其他线程接收工作,并在它到达时运行它。显然你会想添加一个方法来实际结束程序等等…!public static final ...
  • Java中的主线程

    2021-02-12 09:26:01
    概览前段时间有同事提到了主线程这个名词,但当时我们说的主线程是指Java Web程序中每一个请求进来时处理逻辑的线程。当时感觉这个描述很奇怪,所以就来研究下这个主线程的确切语义。Java提供了内置的多线程编程支持...
  • Java如何创建主线程

    2021-02-28 12:11:17
    这就是主线程发生的情况:JVM创建了它,并创建了一个实例java.lang.Thread来表示它。在Hotspot JVMThreads中,src/share/vm/runtime/thread.hppand中定义的类中有很多与线程相关的代码src/shar...
  • The Java Virtual Machine continues to execute threads until either of the following occurs: The exit method of class Runtime has been called and the security manager has permitted the exit operation ...
  • 用sleep让主线程睡眠一段时间package com.test;public class test3 {public static void main(String[] args) throws InterruptedException {new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-...
  • 最近在和同事讨论java主线程和子线程之间的关系,自己也到网上搜索了下,发现各种答案都有,有些还是互相矛盾的。经过测试自己得出以下几个结论,跟大家分享下,如果有错误,欢迎大牛指正,帮助我这只小菜鸟。废话不...
  • count字段添加volidate修饰,保证每次从主线程中取得的数据是最新的。但是结果还是这样?为什么呢? public class Test { public volatile static int count = 0; public static void inc() { //这里延迟1毫秒,...
  • 首先,java里的线程没有主和子的说法,只32313133353236313431303231363533e4b893e5b19e31333337613830有线程优先级的说法,也许你说的是进程和线程吧,下面是详细资料线程是指进程内的一个执行单元,也是进程内的可...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,630
精华内容 69,852
关键字:

java主线程

java 订阅