您的位置:首页 > 新闻 > 会展 > 泉州哪里建设网站_交互设计作品集网站_企业网站推广有哪些方式_香港旺道旺国际集团

泉州哪里建设网站_交互设计作品集网站_企业网站推广有哪些方式_香港旺道旺国际集团

2025/2/26 13:29:36 来源:https://blog.csdn.net/2402_89094746/article/details/145773713  浏览:    关键词:泉州哪里建设网站_交互设计作品集网站_企业网站推广有哪些方式_香港旺道旺国际集团
泉州哪里建设网站_交互设计作品集网站_企业网站推广有哪些方式_香港旺道旺国际集团

目录

认识线程

程序 进程 线程

特点·:

创建线程

继承Thread类的方法

实现Runnable接口的方法

Tread类中的方法

线程状态


认识线程

程序 进程 线程

  • 程序(program):是为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码。
  •  进程(process)正在内存中运行的应用程序,如运行中的QQ,运行中的音乐播放 器。进程是操作系统进行资源分配的最小单位.
  • 线程(thread)进程可进一步细化为线程,是一个进程内部的最小执行单元,是操 作系统进行任务调度的最小单元,隶属于进程

特点·:

  • 一个进程可以包含多个线程,线程不能脱离进程而独立运行;
  • 每一个进程至少包含一个线程(称为主线程);
  • 在主线程中可以创建并启动其它的线程
  • 一个进程内的所有线程共享该进程的内存资源

创建线程

继承Thread类的方法

在Java中要实现线程,可以继承Tread类,重写其中的run方法。

方法原型:

Thread类中的run方法本身并不执行任何操作,如果我们重写runf方法,当它启动时,将执行run方法

定义:

public class MyThread extends Thread {

public void run() { }

}

调用:

MyThread thread = new MyThread();

thread.start();

实例

package com.wyk.javathread.demo1;public class Text {/*启动Java主线程*/public static void main(String[] args) {//创建一个其他线程MyThread myThread = new MyThread();myThread.start();//此for属于main线for (int i = 0; i <1000 ; i++) {System.out.println("main:"+i);}}
}
package com.wyk.javathread.demo1;
public class MyThread extends Thread {/*线程中要执行的任务,*/@Overridepublic void run() {for (int i = 0; i <1000 ; i++) {System.out.println("MyThread:"+i);}}
}

实现Runnable接口的方法

实现Runnable接口的方式

● java.lang.Runnable接口中仅仅只有一个抽象方法

      public void run()

● 也可以通过实现Runnable接口的方式来实现线程,只需要实现其中的run方法即可;

● Runnable接口的存在主要是为了解决Java中不允许多继承的问题。

定义:

public class MyTask implements Runnable{

@Override public void run() {

……

}

}

创建任务

MyTask myTask = new MyTask ();

创建一个线程,把任务交给线程执行

Thread thread = new Thread(myTask);

thread.start();

实例

public class Test {public static void main(String[] args) {Task task = new Task();Thread thread = new Thread(task);//创建了一格线程对象}
}
public class Task implements Runnable{@Overridepublic void run() {for (int i = 0; i <1000; i++) {System.out.println("Task:"+i);}}/*实现了Runable的接口的类,并不是线程是把要执行的任务放在此类的run()中,这个类就可以看作是一个任务类run() 写线程要执行的任务*/
}

实现Runnable接口方式的好处

1)避免了单继承的局限性

2)多个线程可以共享同一个接口实现类的对象,非常适合多个相同线程来处理同一份资源。

Tread类中的方法

public class Test {public static void main(String[] args) throws InterruptedException {Task task = new Task();/*Thread (Runnable r) 接收一个实现了Runnable接口的实现子类Thread(Runnable r, String name)接收了实现了Runnable接口的实现子类,还可以为线程定义名称setPriority(10) 设置线程优先级   优先级取值1-10; 默认为5;此方法写在哪一个线程中,让哪个线程休眠*/Thread thread1= new Thread(task,"窗口1");Thread thread2 = new Thread(task,"窗口2");thread1.setName("线程1");//thread1.setPriority(1);//thread2.setPriority(10);//Thread.sleep(20000);thread1.start();thread1.join();//让其他线程等待调用了join的线程执行完System.out.println(Thread.currentThread().getPriority());}}
public class Task implements Runnable{@Overridepublic void run() {for (int i = 0; i <100 ; i++) {//System.out.println(Thread.currentThread());//返回当前次任务的线程对象//System.out.println(Thread.currentThread().getName()+Thread.currentThread().getId());// getName 获取线程的名字    getId  获取线程idint a= 0;while (a<10){a++;}System.out.println(new Date());}}
}

线程优先级

● 计算机只有一个CPU,各个线程轮流获得CPU的使用权,才能执行任务;

● 优先级较高的线程有更多获得CPU的机会;

● 优先级用整数表示,取值范围是1~10,一般情况下,线程的默认优先级都是5, 但是也可以通过setPriority和getPriority方法来设置或返回优先级;

Thread类有如下3个静态常量来表示优先级

● MAX_PRIORITY:取值为10,表示最高优先级。

● MIN_PRIORITY:取值为1,表示最底优先级。

● NORM_PRIORITY:取值为5,表示默认的优先级


线程状态

线程在它的生命周期中会处于不同的状态:

  • 新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对 象处于新建状态
  •  就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时 间片,此时它已具备了运行的条件,只是没分配到CPU资源
  •  运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run ()方法定义了线程的操作和功能
  •  阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让出 CPU并临时中止自己的执行,进入阻塞状态
  • 死亡:线程完成了它的全部工作或线程被提前强制性地中止或出现异常 导致结束

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com