线程及其创建的方式

线程主要发挥作用的时候:当一个线程所执行的I/O被阻塞的时候,同一进程中的其他线程可以使用CPU来进行计算。这样,就提高了程序的执行效率。

状态:运行、就绪(等待被调用)、阻塞(等待I/O资源)

两种创建方法

  1. 继承Thread类,并override其中的run()方法(当一个类没有继承其他类的时候,适合用这种方法)
  2. 实现Runnable接口,并实现run()方法(当一个类已经继承另外一个类的时候,适合用这种方法)

通过使用自定义的构造方法传递各种参数。

启动:获得Thread对象后调用start()方法。

public class MyThread1 extends Thread {
    public MyThread1(String name) {
        super(name);
    }

    public void run() {
        System.out.println(this.getName());
    }

    public static void main(String[] args) {
        Thread t1 = new MyThread1("阿三");
        t1.start();
    }
}

public class MyThread implements Runnable {

 private String name;

 public MyThread(String name) {
  this.name = name;
 }

 @Override
 public void run() {
    System.out.println(name);
 } 

 public static void main(String[] args) {
  Thread tt1 = new Thread(new MyThread("张三"));
  tt1.start();
 }
}

等待和唤醒机制

使用Object.wait()和Object.notify(),必须在同步方法或同步块里调用

使用join()方法等待另外一个线程的终止,如:

a.join();
System.out.print("End"); //等待线程a结束后再打印出“End”

sleep()和wait()的区别

  • sleep():占用CPU资源,或被调度走变成就绪状态
  • wait():不占用CPU资源,等待被notify()唤醒

(原创文章,转载请注明转自Clement-Xu的csdn博客)

版权声明:本文为原创文章,转载请注明转自Clement-Xu的csdn博客。

时间: 2024-08-02 23:26:45

线程及其创建的方式的相关文章

Java多线程——创建线程的两种方式

创建线程方式一:继承Thread类. 步骤:1,定义一个类继承Thread类.2,覆盖Thread类中的run方法.3,直接创建Thread的子类对象创建线程.4,调用start方法开启线程并调用线程的任务run方法执行. 可以通过Thread的getName获取线程的名称 Thread-编号(从0开始)主线程的名字就是main. 例: class Demo extends Thread { private String name; Demo(String name) { super(name)

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方法的方

创建线程的两种方式比较Thread VS Runnable

1.首先来说说创建线程的两种方式 一种方式是继承Thread类,并重写run()方法 1 public class MyThread extends Thread{ 2 @Override 3 public void run() { 4 // TODO Auto-generated method stub 5 6 } 7 } 8 //线程使用 9 MyThread mt = new MyThread(); //创建线程 10 mt.start(); //启动线程 另外一种方式是实现Runnabl

黑马程序员——创建线程的两种方式

java中创建线程有两种方式: 1.继承Thread类 步骤: (1)定义一个类继承Thread类 (2)复写Thread类中的run()方法 (3)调用start()方法:启动线程及调用run()方法 2.实现Runnable接口的方式 步骤:(1)定义一个类实现Runnable接口 (2)覆盖Runnable接口中的run()方法,将线程要运行的代码放到该run方法中 (3)通过Thread类建立线程对象 (4)将实现Runable接口的类对象作为实际参数传递给Thread的构造函数. (5

创建线程的三种方式

创建线程的三种方式 第一种:通过NSThread的对象方法 第二种:通过NSThread的类方法 第三种:通过NSObject的方法 准备在后台线程调用的方法 longOperation: - (void)longOperation:(id)obj { NSLog(@"%@ - %@", [NSThread currentThread], obj); } 方式1:alloc / init - start - (void)threadDemo1 { NSLog(@"before

03_线程的创建和启动_实现Runnable接口方式

[线程的创建和启动的步骤(实现Runnable接口方式)] 1.定义Runnable接口的实现类,并重写其中的run方法.run()方法的方法体是线程执行体.class SonThread  implement Runnable{ public void run(){......}} 2.创建Runnable接口实现类的实例.   sonThread s1=new SonThread(); 3.用该实例作为Thread的target来创建Thread对象.   Thread t1 =new Th

创建线程的两个方式

方式一: package com.Thread1; public class myRunable implements Runnable { public int count; @Override public void run() { while (count < 100) { count++; System.out.println("count:" + count + "由" + Thread.currentThread().getName() + &qu

Java并发编程-创建线程的两种方式及区别

转载请注明:http://blog.csdn.net/UniKylin/article/details/45016117 1.线程和进程的区别 并行:是多个任务在同一时间同时执行,例如多核计算机同时计算的任务可以理解为并行 并发:从微观上看是多个任务抢占一个CPU从而执行自己的任务,轮流执行任务,但是如果遇到资源冲突的时候并没有从根本提高执行效率.但是提高了CPU的使用效率. 前段时间在GitHub上的一幅图可以很好的阐述上面的概念非常形象 2.Java中创建线程的两种方式 1.第一种方式:直接

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方法的方