预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

【Java语言】Java多线程一(线程启动|线程中断) 一.线程启动 线程启动: --1.继承Thread运行线程:重写Thread类的run方法,然后执行该线程; --2.实现Runnable接口,并运行线程; --代码示例: [java]viewplaincopy在CODE上查看代码片派生到我的代码片 packagecom.hanshuliang.thread; publicclassThreadStart{ publicstaticvoidmain(String[]args){ //1.继承Thread运行线程 MyThreadthread=newMyThread(); thread.start(); //2.实现Runnable接口,并运行线程 ThreadrunnableThread=newThread(newMyRunnable()); runnableThread.start(); } //1.继承Thread类 staticclassMyThreadextendsThread{ @Override publicvoidrun(){ super.run(); System.out.println("MyThread线程启动"); } } //2.实现Runnable接口 staticclassMyRunnableimplementsRunnable{ @Override publicvoidrun(){ System.out.println("MyRunnable线程启动"); } } } --运行结果: [java]viewplaincopy在CODE上查看代码片派生到我的代码片 MyThread线程启动 MyRunnable线程启动 三.线程停止 线程停止常用方法: --1.使用interrupt()方法停止线程; --2.使用退出标志,让线程正常退出; --3.弃用的方法(不推荐):使用stop()方法强制停止线程,但是该方法已经作废,不建议使用; 1.使用interrupt()方法停止线程 (1)线程无法立即停止 interrupt()使用说明: --打标记:调用该方法,不能马上停止该线程,只是在当前线程打了一个停止标记; 代码示例: --代码: [java]viewplaincopy在CODE上查看代码片派生到我的代码片 publicclassInterruptDemo{ publicstaticclassMyThreadextendsThread{ @Override publicvoidrun(){ super.run(); for(inti=1;i<=1000000;i++)//打印一百万数字,大概持续5~10秒左右 System.out.println(i); } } publicstaticvoidmain(String[]args)throwsInterruptedException{ MyThreadthread=newMyThread(); thread.start();//启动线程 Thread.sleep(100);//启动线程100ms后中断线程 thread.interrupt();//中断线程 } } --运行结果:这里只贴上最后几行命令行的运行结果; [plain]viewplaincopy在CODE上查看代码片派生到我的代码片 ...... 999996 999997 999998 999999 1000000 --总结:在上述程序中,打印了100万数字,从1到1000000,整个过程持续了10秒左右,但是我们在线程开始后100ms就中断了线程,但是线程还是执行完毕了,说明线程并没有在调用interrupt()方法后立即停止; (2)线程停止状态判定 两个线程停止状态判定的方法: --1.interrupted()方法:①判断当前线程的中断标志,②如果是中断标志true,那么清除中断标志,改为false;,③连续两次调用该方法,第二次返回false,④静态方法:该方法是测试当前线程的中断标志,在哪个线程中调用,就是判定的哪个线程的中断标志,不管调用的主体是哪个线程; --2.isInterrupted()方法:判断线程的中断状态,不管真实的运行状态,只关心状态; --注意:两个方法都是判断中断状态的,与线程的真实运行状况无关; (3)interrupted()方法测试 interrupted()方法测试1:测试interrupted方法的判断是否已经中断的效果; --测试代码: [java]viewplaincopy在CODE上查看代码片派生到我的代码片 publicclassInterruptedDem