java-JAVA启动线程的问题不清楚

问题描述

JAVA启动线程的问题不清楚

启动线程:
new Thread(x).start()和x.start()有什么区别,什么时候该用那个?

解决方案

前者定义了一个无名线程直接启动了,而后者定义了一个线程变量名为t,二者功效一样,但是后者可以对这个线程对象进行其他操作,例如中断x. interrupt();区别就是是否需要对线程对象进行其他操作,如果需要的话就要用变量接收。

解决方案二:

对于线程的启动来说,是一样的。
但后继是否还有操作线程,两者是不一样的:前者无法再操作此线程,而后者可通过变量 x 来操作线程。

时间: 2024-08-01 15:55:36

java-JAVA启动线程的问题不清楚的相关文章

Java中定时启动线程

这里提供两种在指定时间后启动线程的方法.一是通过java.util.concurrent.DelayQueue实现:二是通过java.util.concurrent.ScheduledThreadPoolExecutor实现. 1. java.util.concurrent.DelayQueue 类DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素.它接受实现Delayed接口的实例作为元素. <<interface>>Delayed.java package

多线程问题-新手求助关于Java多线程中启动线程问题

问题描述 新手求助关于Java多线程中启动线程问题 public class Example15_1 { /** * @param args */public static void main(String[] args) { // TODO Auto-generated method stub SpeakHello speakHello; SpeakNinhao speakNinhao; speakHello = new SpeakHello(); speakNinhao= new Speak

详解Java编程中线程同步以及定时启动线程的方法_java

使用wait()与notify()实现线程间协作 1. wait()与notify()/notifyAll()调用sleep()和yield()的时候锁并没有被释放,而调用wait()将释放锁.这样另一个任务(线程)可以获得当前对象的锁,从而进入它的synchronized方法中.可以通过notify()/notifyAll(),或者时间到期,从wait()中恢复执行. 只能在同步控制方法或同步块中调用wait().notify()和notifyAll().如果在非同步的方法里调用这些方法,在运

java学习日记(线程)

一.线程的概念: 线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制:但与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈.所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小的多,正因如此,线程被称为轻负荷进程(light-weight process).一个进程中可以包含多个线程. 一个线程是一个程序内部的顺序控制流. 1. 进程:每个进程都有独立的代码和数据空间(进程上

Java服务器端Socket线程池

import java.util.Vector; import java.net.*; import java.io.*; public class ThreadPool { public static final int MAX_THREADS = 100; public static final int MAX_SPARE_THREADS = 50; public static final int MIN_SPARE_THREADS = 10; public static final int

Java多线程的线程守护两个例子

  核心说明:理解这句话下面可以不看了. 守护与其他线程同时执行,当正在运行的线程都是守护线程时,Java 虚拟机退出. 守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程. 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收.内存管理等线程都是守护线程.还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数.超时时间.状态等等. setDaemon方法的详细说明: public fi

Linux问题情报分享(1):内核Stack Clash补丁导致Java程序启动失败

关于Stack Clash,缺少耐心的读者,请参考Stack Clash 漏洞正粉碎 Linux 防御危及 root 权限,较全面的介绍请参考Stack Guard Page Circumvention Affecting Multiple Packages. 各个Linux发行版都已经发布了升级,合并了上游补丁. 上游补丁通过增大stack guard gap(堆栈保护措施,更多请参考Buffer overflow protection)尺寸到1M的方式,修复了Linux Kernel Sta

详解Java中的线程让步yield()与线程休眠sleep()方法_java

线程让步: yield()yield()的作用是让步.它能让当前线程由"运行状态"进入到"就绪状态",从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权:也有可能是当前线程又进入到"运行状态"继续运行!示例: class ThreadA extends Thread{ public ThreadA(String name){ super(name); } pu

java程序启动时cpu和负载高探索

这两天协助运维定位1个监控程序CPU占用率达到150%的问题,过程曲折,结论简单,很有意思:) 首先我们来看一下cpu高时候截图: 可以看到红色框中的监控程序CPU占用率都很高,但其实这些监控程序的实现很简单:发送1个http请求,收到响应后简单判断一下响应码,然后打印监控结果,打印完成就退出了.每次监控都会重新由daemon程序拉起运行. 这么简单的业务占用这么高的cpu,怎么感觉都不太可能,于是拿到监控程序的源码开始定位. 第一个想到的是VisualVm.JConsole等工具,但由于程序很

java 可重启线程及线程池类的设计

http://blog.csdn.net/chenqiu1024/article/details/2829827 了解JAVA多线程编程的人都知道,要产生一个线程有两种方法,一是类直接继承Thread类并实现其run()方法:二是类实现Runnable接口并实现其run()方法,然后新建一个以该类为构造方法参数的Thread,类似于如下形式: Thread t=new Thread(myRunnable).而最终使线程启动都是执行Thread类的start()方法.        在JAVA中,