Java创建线程的方式

①继承Thread类(真正意义上的线程类),是Runnable接口的实现。

②实现Runnable接口,并重写里面的run方法。

③使用Executor框架创建线程池。Executor框架是juc里提供的线程池的实现。

调用线程的start():启动此线程;调用相应的run()方法

继承于Thread类的线程类,可以直接调用start方法启动线程(使用static也可以实现资源共享).一个线程(对象)只能够执行一次start(),而且不能通过Thread实现类对象的run()去启动一个线程。

实现Runnable接口的类需要再次用Thread类包装后才能调用start方法。(三个Thread对象包装一个类对象,就实现了资源共享)。

线程的使用的话,注意锁和同步的使用。(多线程访问共享资源容易出现线程安全问题)

一般情况下,常见的是第二种。

* Runnable接口有如下好处:

*①避免点继承的局限,一个类可以继承多个接口。

*②适合于资源的共享

/*

* Thread的常用方法:

* 1.start():启动线程并执行相应的run()方法

* 2.run():子线程要执行的代码放入run()方法中

* 3.currentThread():静态的,调取当前的线程

* 4.getName():获取此线程的名字

* 5.setName():设置此线程的名字

* 6.yield():调用此方法的线程释放当前CPU的执行权(很可能自己再次抢到资源)

* 7.join():在A线程中调用B线程的join()方法,表示:当执行到此方法,A线程停止执行,直至B线程执行完毕,

* A线程再接着join()之后的代码执行

* 8.isAlive():判断当前线程是否还存活

* 9.sleep(long l):显式的让当前线程睡眠l毫秒  (只能捕获异常,因为父类run方法没有抛异常)

* 10.线程通信(方法在Object类中):wait()   notify()  notifyAll()

*

*设置线程的优先级(非绝对,只是相对几率大些)

* getPriority():返回线程优先值

* setPriority(int newPriority):改变线程的优先级

*/

时间: 2024-10-18 16:01:08

Java创建线程的方式的相关文章

Java创建线程的三种主要方式

Java创建线程的主要方式 一.继承Thread类创建 通过继承Thread并且重写其run(),run方法中即线程执行任务.创建后的子类通过调用 start() 方法即可执行线程方法. 通过继承Thread实现的线程类,多个线程间无法共享线程类的实例变量.(需要创建不同Thread对象,自然不共享) 例子: /** * 通过继承Thread实现线程 */ public class ThreadTest extends Thread{ private int i = 0 ; @Override

Java创建线程的细节分析

转载:http://shmilyaw-hotmail-com.iteye.com/blog/1880902 前言 关于线程创建的问题,可以说是老生常谈了.在刚开始学习Thread的时候基本上都会接触到,用简单的一两句话就可以概括起来.一个是创建类实现Runnable接口,然后将该类的实例作为参数传入到Thread构造函数中.再调用Thread对象的start方法.还有一种是继承Thread类,覆写run方法.然后在该对象实例中调用start方法.那么,这两种方式在什么情况下适用呢?还有,既然我们

java 创建线程

java创建线程有3种方式: (1)继承Thread(2)实现Runnable接口(3)实现Callable接口 1.继承Thead package com.java.thread; public class ThreadClient { public static void main(String[] args) { Print p1 = new Print(); Print p2 = new Print(); p1.start(); p2.start(); } } class Print e

线程八大基础核心一(创建线程的方式)

1.引子 在java多线程并发编程中,有八大基础核心.考考你:看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第一个基础核心开始:创建线程的方式 2.考考你 #考考你: 你知道在java编程语言中,有几种创建线程的方式吗? #参考如下:网友说法.官方文档 网友说法: 官方文档说法: #说法比较: 在网络上,关于创建线程的方式.主流的说法有四种:继承Threa

cocos2dx2.0 与cocos2dx3.1 创建线程不同方式总结

虽然内容是抄过来的,但是经过了我的验证,而且放在一起就清楚很多了,cocos2dx版本经常变化很大,总会导致这样那样的问题. cocos2dx2.0 中 1. 头文件 #include <pthread.h> ... pthread_t serial_thread_id; // 起这个名字本打算用在socket上的 int serialThreadStart(void);// 启动线程的方法 static void* serialReceiverFun(void *arg);// 被启动的线程

java创建线程的三种方式及其对比

Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实例,即创建了线程对象. (3)调用线程对象的start()方法来启动该线程. package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法,run方法的方

java创建线程的三种方式及其对照

Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类.并重写该类的run方法,该run方法的方法体就代表了线程要完毕的任务.因此把run()方法称为运行体. (2)创建Thread子类的实例,即创建了线程对象. (3)调用线程对象的start()方法来启动该线程. package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法.run方法的方

Java创建线程的第二种方式:实现runable接口

/*需求:简单的卖票程序多个窗口买票 创建线程的第二种方式:实现runable接口 *//*步骤1.定义类实现Runable接口2.覆盖Runable接口中的run方法    将线程要运行的代码存放在该run方法中 3.通过Thread类建立线程对象4.将Runable接口的子类对象作为实际参数传递给Thread类的构造函数  为什么要将Runable接口的子类对象传递给Thread的构造函数.  因为,自定义的run方法所属的对象是Runable接口的子类对象  所以要让线程去指定对象的Run

Java创建线程的三种方式

1.继承Runnable接口 package test; class RunnableDemo implements Runnable{ private Thread t; private String threadName; RunnableDemo(String name){ threadName=name; System.out.println("Creating "+name); } public void run(){ System.out.println("Run