Java线程:多线程的基础
线程是执行由操作系统调度程序独立管理的一小组指令的执行。Java支持多线程,这意味着简单的程序被分解为部分,每个零件都同时执行。这些部件以这样的方式建模,即它不会影响其他部件的运行。它扩展了多任务处理,其中将应用程序细分为称为线程的操作。这些线程彼此平行运行。操作系统调度每个线程的处理时间。
- 新的:新的线程的生命周期开始于新状态,并在程序调用RUN方法之前仍然存在状态。
- Runnable:线程的执行状态。据说线程处于可运行状态。
- 等待:当它等待其他线程执行执行特定任务时,该线程据说是等待状态。当程序呼叫时,线程再次落入可追踪状态。
- 定时等待:可执行线程输入特定时间间隔的等待状态,然后它可以在指定的等待时间之后转回执行状态。
- 终止:当根据需要完成线程任务时,它会终止。但是,线程无法从此状态转换回可逃状态。
由于线程彼此并行运行,因此操作系统必须设置线程的优先级以确定线程执行的顺序。线程优先级在一个(min_priority)到十(max_priority)之间的范围内。默认情况下,线程优先级由NORM_PRIORITY(值五)给出。首先执行具有更高优先级的线程,因为它们是分配处理器 - 首先。
线程以两种方式创建
- 可运行的界面
- 扩展线程类
实现可抵押界面
- 步骤1:首先实现可逃界面给出的run()方法。run()方法是线程的入口点,并将完整的逻辑放在此功能中。
public void run()
- 第2步:实例化线程对象。
线程(runnable obj,string threadnam);
“obj”是主类的实例。
- 步骤3:创建线程对象后,您可以调用Start()方法,又调用RUN()方法来运行线程。
void start()
使用可逃界面的示例
Class Runnablem实现Runnable {私有线程T1;私有字符串线条;runnablem(字符串名称){threadnam = name;system.out.println(“线程创建”+ troofnam);public void run(){system.out.println(“线程运行”+ troofnam);尝试{for(int x = 4; x> 0; x--){system.out.println(“线程:”+ threadnam +“,”+ x);线程(50);catch(InterruptedException e){system.out.println(“接入线程”+ threadnam +“中断”。);system.out.println(“线程”+ threadnam +“退出”);public void start(){system.out.println(“启动”+ troofnam); if (t1 == null) { t1= new Thread (this, threadNam);// New Thread is created t1.start ();//run method is called } } } public class TestThread { public static void main(String args[]) { RunnableDem run1 = new RunnableDem( "Thread_1");//Object of Class is created run1.start();//Start method is called RunnableDem run2= new RunnableDem( "Thread_2"); // 2n对象是创建的run2.start();// start方法称为}}
在Main方法中,创建类的对象调用Runnable接口的启动方法。在启动方法中,创建新线程,并调用RUN()方法进行线程执行。
通过扩展线程类
class threaddemo扩展了线程//线程类被扩展{私有线程t;私有字符串线条;ThreadDemo(字符串名称)///类的默认构造函数{threadnam = name;system.out.println(“线程创建”+ troofnam);} public void运行()//线程执行启动{system.out.println(“运行”+ troofnam);尝试{for(int i = 4; i> 0; i--){system.out.println(“thread:”+ threadnam +“,”+ i);thread.sleep(50); //睡眠方法在时间等待状态下采用线程50秒}}}} catch(InterruptedException e){system.out.println(“线程”+ troofnam +“中断”。“);system.out.println(“线程”+ threadnam +“退出”);public void start(){system.out.println(“线程启动”+ troofnam);if(t == null){t =新线程(这,threadnam); //线程是创建的t.start(); } } } class TestThread { public static void main(String args[]) { ThreadDemo t11 = new ThreadDemo( "Thread_1");//Class object is created and Thread name is passed as arguments t11.start(); ThreadDemo t21 = new ThreadDemo( "Thread_2"); t21.start(); } }
输出
线程创建线程_1.
线程启动Thread_1
线程创建Thread_2.
线程启动Thread_2
线程运行thread_1
线程:线程1,4
线程运行线程-2
线程:线程2,4
线程:线程-1,3
线程:线程2,3
线程:线程-1,2
线程:线程2,2
线程:线程1,1
线程:线程2,1
线程线程_1退出。
线程线路退出。
该对象是在类的主要方法中创建的,并调用start方法。Start方法创建一个线程并调用RUN方法进行线程执行。
线程控制
Java提供了一种控制程序中的线程的方法。可以构建多线程程序,可以停止,恢复或挂起线程。以下是方法列表:
- public void suspend():暂停可以恢复的线程当前状态。
- public void stop():完全停止线程
- public void resume():恢复暂停的线程
- public void wait():使线程等待直到notify()调用方法
- 公共void notify():从等待状态唤醒线程。
例子:
公共类Thread2实现Runnable {Thread T1;int count1;布尔悬挂= false;public void run(){if(暂停)t.resume();否则t.suspend();暂停=!暂停;返回真;} ...}
一旦stop()方法终止了线程的执行,即使启动()方法也无法启动它,因此使用休眠()方法而不是它暂停线程执行一段时间。这不是一个很好的做法,因为线程在那段时间内不可用。暂停()方法用于暂时暂停执行线程,并恢复()方法使暂停的线程再次运行。