在Java中,关于线程的创建,方法及生命周期
来源:互联网 发布:java代码块执行顺序 编辑:程序博客网 时间:2024/06/05 10:34
前言:
可自行查看Thread类的源码,查看线程如何使用
关于线程创建的方式一:继承Thread类
其代码示例如下:
关于线程创建的方式二:实现Runnable
代码示例如下:
关于线程的方法的使用:
其代码示例如下:
线程的生命周期:
可自行查看Thread类的源码,查看线程如何使用
关于线程创建的方式一:继承Thread类
其代码示例如下:
package com.atguigu.java1;/* * 创建一个子线程,完成1-100之间自然数的输出。同样地,主线程执行同样的操作 * 创建多线程的第一种方式:继承java.lang.Thread类 *///1.创建一个继承于Thread的子类class SubThread extends Thread{ //2.重写Thread类的run()方法.方法内实现此子线程要完成的功能 public void run(){ for(int i = 1;i <= 100;i++){ System.out.println(Thread.currentThread().getName() +":" + i); } }}public class TestThread { public static void main(String[] args) { //3.创建子类的对象 SubThread st1 = new SubThread(); SubThread st2 = new SubThread(); //4.调用线程的start():启动此线程;调用相应的run()方法 //一个线程只能够执行一次start() //不能通过Thread实现类对象的run()去启动一个线程 st1.start(); //st.start(); //st.run(); st2.start(); for(int i = 1;i <= 100;i++){ System.out.println(Thread.currentThread().getName() +":" + i); } }}
关于线程创建的方式二:实现Runnable
代码示例如下:
package com.atguigu.java;/* * 创建多线程的方式二:通过实现的方式 * * 对比一下继承的方式 vs 实现的方式 * 1.联系:public class Thread implements Runnable * 2.哪个方式好?实现的方式优于继承的方式 * why? ① 避免了java单继承的局限性 * ② 如果多个线程要操作同一份资源(或数据),更适合使用实现的方式 *///1.创建一个实现了Runnable接口的类class PrintNum1 implements Runnable { //2.实现接口的抽象方法 public void run() { // 子线程执行的代码 for (int i = 1; i <= 100; i++) { if (i % 2 == 0) { System.out.println(Thread.currentThread().getName() + ":" + i); } } }}public class TestThread1 { public static void main(String[] args) { //3.创建一个Runnable接口实现类的对象 PrintNum1 p = new PrintNum1(); // p.start(); // p.run(); //要想启动一个多线程,必须调用start() //4.将此对象作为形参传递给Thread类的构造器中,创建Thread类的对象,此对象即为一个线程 Thread t1 = new Thread(p); //5.调用start()方法:启动线程并执行run() t1.start();//启动线程;执行Thread对象生成时构造器形参的对象的run()方法。 //再创建一个线程 Thread t2 = new Thread(p); t2.start(); }}
关于线程的方法的使用:
其代码示例如下:
package com.atguigu.java1;/* * 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毫秒 * 10.线程通信:wait() notify() notifyAll() * * 设置线程的优先级 * getPriority() :返回线程优先值 setPriority(int newPriority) :改变线程的优先级 */class SubThread1 extends Thread { public void run() { for (int i = 1; i <= 100; i++) { // try { // Thread.currentThread().sleep(1000); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } System.out.println(Thread.currentThread().getName() + ":" + Thread.currentThread().getPriority() + ":" + i); } }}public class TestThread1 { public static void main(String[] args) { SubThread1 st1 = new SubThread1(); st1.setName("子线程1"); st1.setPriority(Thread.MAX_PRIORITY); st1.start(); Thread.currentThread().setName("========主线程"); for (int i = 1; i <= 100; i++) { System.out.println(Thread.currentThread().getName() + ":" + Thread.currentThread().getPriority() + ":" + i); // if(i % 10 == 0){ // Thread.currentThread().yield(); // } // if(i == 20){ // try { // st1.join(); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } } System.out.println(st1.isAlive()); }}
线程的生命周期:
0 0
- 在Java中,关于线程的创建,方法及生命周期
- java中创建线程的两种方法及比较
- java中创建线程的的方法
- java中创建线程的方法
- java中线程的生命周期
- Java中线程的生命周期
- Java中线程的生命周期
- Java中线程的生命周期
- 在子线程中创建线程的方法
- 在子线程中创建线程的方法
- 在Java中,关于线程的同步
- 在Java中,关于线程的通信
- Java中创建单例模式的五种方法及线程安全
- VC中关于创建一个新的线程的方法
- Java(线程的生命周期及调度)
- 线程的生命周期及JAVA对应函数
- Java 多线程--- 线程的生命周期及优先级
- Java创建线程的三种方法比较及用法
- 关于文件流的使用
- 关于缓冲流的使用
- 关于标准输入输出流及转换流的使用
- 对象流的使用
- RandomAccessFile的使用
- 在Java中,关于线程的创建,方法及生命周期
- 当月 当年sql
- 关于equals()和toString()方法
- cc2541修改广播信号(以蓝牙接入微信为例)
- 在Java中,关于线程的同步
- 在Java中,关于线程的通信
- 关于Java的异常处理
- 内部类和匿名内部类
- 在Java中,关于package和import