import java.lang.*;
import java.io.*;
public class one {
/**
*
* @author ZJC
* 一、线程的状态分为:
* 1.可运行状态:使用start()方法启动一个线程后,线程进入该状态。
* 2.运行中状态:调用了run()方法。
* 3.阻塞状态:一个正在运行的线程因为某种原因不能继续运行,进入阻塞状态(Blocked).
* 4.死亡状态:线程结束或因异常退出run()方法。
* 二、改变线程状态:
* 1.线程睡眠sleep():线程由运行中的状态进入不可运行的状态,睡眠后再进入可运行状态 *
* 2.暂停线程yield():暂停当前线程执行,允许其他线程执行。线程状态仍为可运行,不转为阻塞。
* 此时,系统选择其他同优先级线程执行,若无的的话,则执行该线程。这就是yield:屈服
* 3.连接线程join():
* 4.中断线程interrupt():
*
*/
public static class ThreadLearn extends Thread
{
public String names;
public ThreadLearn(String name){super(name);names = name;}
public void run()
{
for(int i = 0;i<5;i++)
{
System.out.println(names+":"+i);
try
{
Thread.sleep(1000);
/**
* 调用目的:不让当前线程独占该进程所获得的CPU资源,流出一定
* 时间片给该进程中的其他线程;
*/
}
catch(InterruptedException e )
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
ThreadLearn a= new ThreadLearn("a");
ThreadLearn b= new ThreadLearn("b");
System.out.println(Thread.currentThread().getName() + " 线程运行开始!");
a.start();
b.start();
System.out.println(Thread.currentThread().getName() + " 线程运行结束!");
/**
* 说明:程序启动运行的时候,java虚拟机启动一个进程,主进程main在
* main()调用的时候创建,随着调用ThreadLearn对象a的start()方法,
* 另外一个线程也启动了,这样,整个应用就在多线程下运行。Nice!
* start()方法调用后并不是立即执行多线程代码,而是使得该线程变为可运行
* 状态,什么时候运行由操作系统的设置决定。
* 多线程程序在该情况下是乱序执行的。结果随机的。如果创建的对象多会更明显
*/
}
}
Java学习经验(一)多线程初识
最新推荐文章于 2023-03-19 17:36:07 发布