一:使用Theard的公共静态方法直接生成并控制,如下:
public class currentThread{
public static void main(String args[]){
Threadthread = Thread.currentThread();
System.out.println("线程名称是:"+thread.getName());
System.out.println("线程的优先级是:"+thread.getPriority());
thread.setName("thread one");
System.out.println("线程现在的名字是:" +thread.getName());
thread.setPriority(1);
System.out.println("线程现在的优先级是:" +thread.getPriority());
try{
for (int i =0; i < 5; i++) {
System.out.println(i);
thread.sleep(1000);
}
} catch(Exception e) {
// TODO:handle exception
}
}
}
二:工程中最常用的方法,接口Runnable,如下:public class newThreadimplements Runnable{
//使用Runnable定义的子类中没有start()方法,只有Thread类中才有。此时观察Thread类,有一个构造方法:publicThread(Runnable targer)
//此构造方法接受Runnable的子类实例,也就是说可以通过Thread类来启动Runnable实现的多线程。start()可以协调系统的资源;
// newThread(){
// Threadthread = new Thread(this,"t_1");//直接重新命名
// System.out.println(thread);
// thread.start();
// }
newThread(String name){
};
//在正式方法中直接用newThread mt1=new newThread("线程1")就可以了
static newThread mt1=new newThread("线程1");
@Override
public void run() {
// TODOAuto-generated method stub
}
public static void main(String args[]){
//newnewThread();
newThread(mt1).start();
try{
for (int i =0; i < 10; i++) {
System.out.println(i);
Thread.sleep(1000);
}
} catch(Exception e) {
// TODO:handle exception
}
}
}
三:Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限,下面看例子:
class MyThread extends Thread{
privateString name;
publicMyThread(String name) {
super();
this.name = name;
}
public voidrun(){
for(int i=0;i<10;i++){
System.out.println("线程开始:"+this.name+",i="+i);
}
}
}
package org.thread.demo;
public classThreadDemo01 {
public static void main(String[] args) {
MyThread mt1=new MyThread("线程a");
MyThread mt2=new MyThread("线程b");
mt1.run();
mt2.run();
}
}
但是,此时结果很有规律,先第一个对象执行,然后第二个对象执行,并没有相互运行。在JDK的文档中可以发现,一旦调用start()方法,则会通过JVM找到run()方法。下面启动
start()方法启动线程:
package org.thread.demo;
public class ThreadDemo01 {
publicstatic void main(String[] args) {
MyThread mt1=new MyThread("线程a");
MyThread mt2=new MyThread("线程b");
mt1.start();
mt2.start();
}
};
这样程序可以正常完成交互式运行。那么为啥非要使用start();方法启动多线程呢?
在JDK的安装路径下,src.zip是全部的java源程序,通过此代码找到Thread中的start()方法的定义,可以发现此方法中使用了private native voidstart0();其中native关键字表示可以调用操作系统的底层函数,那么这样的技术成为JNI技术(java NativeInterface)
分享到:
相关推荐
thread 线程类 实现runnable接口
在Java中只支持单继承,因此通过继承Thread类创建线程有一定的局限性,这时可以使用另一种方式,即实现Runnable接口来创建线程。通过这种方式需要在Thread(Runnable target)的构造方法中,传递一个实现了Runnable...
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
主要介绍了java 多线程Thread与runnable的区别的相关资料,java线程有两种方法继承thread类与实现runnable接口,下面就提供实例帮助大家理解,需要的朋友可以参考下
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
2. 可以通过创建 Thread的实例来创建新的线程。 3. 每个线程都是通过某个特定的Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。 4. 通过调用Thread类的start()方法来启动一个线程(只是将线程...
实现Runnable接口的类必须使用Thread类的实例才能创建线程,通过Runnable接口创建线程分为以下两步
本文首先介绍了线程的有关概念,接着介绍了线程的生命期及其状态间的转换,多线程的调度 原则,线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口
在一个线程中求100以内的偶数,求出一个偶数后休眠一个随机时间在(1-300毫秒之间).在另一个线程中求奇数,求出一个奇数后也休眠一个随机时间(1-300毫秒之间).输出数据时应有提示,指明是哪个线程输出的数据 用实例...
1、Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。 2、多线程是并发执行的,交替占有cpu执行,请编写示例程序,并观察输出结果。 3、采用线程同步方法...
主要介绍了java Runnable接口创建线程的相关资料,需要的朋友可以参考下
分别用Thread类和Runnable接口实现的阶乘的计算过程及结果的显示(本来一开始设置的不要积分,不知道为啥变得需要积分了,故此调整一下)
我相信对初学者这是很有帮助的,了解两中实现多线程的方法的不同这处
JAVA 的线程详解,有实例的!使用后别忘给个评价>>>>
java中实现多线程有两种方法:一种是继承Thread类,另一种是实现Runnable接口。
在第二种方法中,由于3个Thread对象共同执行一个Runnable对象中的代码,因此可能会造成线程的不安全,比如可能ticket会输出-1(如果我们Syste
首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。 而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。 ...
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
C#多线程,System.Threading.Thread类,线程同步等