312Thread的常用方法sleep和313创建多线程的第二种方式实现Runna接口
Thread的常用方法sleep
sleep:sleep方法可以让线程进入到Waiting状态,并且不占用CPU资源,但是不释放锁,直到规定时间后再执行,休眠期间如果被中断,会抛出异常并清除中断状态。
publc static void sleep( Long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。毫秒数结束之后,线程继续执行
这个sleep的方法大家很常见也很常用,也别是刚开始玩代码的时候,很喜欢测试一些逻辑的时候,sleep一下。
sleep 有啥用:
让线程在我们要它执行的时候执行,如果我们不要,那就让它睡,不占用 CPU 资源。
那么其实在使用多线程的时候,很容易关联到 锁的使用 ,synchronized 和 Lock这些 。
那么该篇文章其实核心内容是想让大家知道,sleep 与 锁资源之间的关系。
public static void main(String[] args){ for (int i = 1; i <10 ; i++) { System.out.println(i); }try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }
public class ThreadSleep extends Thread { @Override public void run() { System.out.println("ThreadSleep begin " + System.currentTimeMillis()); try { Thread.sleep(1000); } catch (InterruptedException e) { } System.out.println("ThreadSleep end " + System.currentTimeMillis()); } public static void main(String[] args) { new ThreadSleep().start(); } }
创建多线程的第二种方式实现Runna接口
采用java. lang Runnable也是非常常见的一种,我们只需要重写run方法即可
步骤如下
1.定义 Runnable接口的实现类,并重写该接口的run(方法,该run(方法的方法体同样是该线程的线程执行体。
2.创建 Runnable实现类的实例,并以此实例作为 Thread的 target来创建 Thread对象,该 Thread对象才是真正的线程对象。
3调用线程对象的 start(方法来启动线程。
/** * 描述: * 1.实现Runnable接口方式创建多线程 * @author 闲走天涯 * @create 2021/3/16 14:45 * 创建一个线程,最简单的方法是创建一个实现 Runnable 接口的类。 * 为了实现 Runnable,一个类只需要执行一个方法调用 run() */ public class TestRunnable implements Runnable{ private Integer num=100; @Override public void run() { while (num <= 100) { try { Thread.sleep(300); num--; System.out.println("余票数:" + num); if (num <= 0){break;} }catch (Exception e){ System.out.println("异常,退出循环"); break; } } } public static void main(String[] args) throws Exception{ TestRunnable runnable = new TestRunnable(); new Thread(runnable).start(); Thread.sleep(250); TestRunnable runnable2 = new TestRunnable(); new Thread(runnable2).start(); Thread.sleep(1000); TestRunnable runnable3 = new TestRunnable(); new Thread(runnable3).start(); new Thread(()->System.out.println("java 8")).start(); } }
/* 建多线程程序的第二种方式: 实现 Runnable接口java. Lang RunnableRunnable接口应该由那些打算通过某一线程执行其实例的类来实现。 类必须定义一个称为rn的无参数方法。 java.Lang. Thread类的构造方法Thread( Runnable target)分配新的 Thread对象。 Thread( Runnable target, String name)分配新的 Thread对象。 实现步骤: 1.创建一个 Runnable接口的实现类 2.在实现类中重写 Runnable接口的run方法,设置线程任务 3.创建一个 Runnable接口的实现类对象 4.创建 Thread(类对象,构造方法中传递 Runnable接口的实现类对象 5.调用 Threa类中的 start方法,开启新的线程执行run方法 */ public class demo05 { public static void main(String[] args) { RunnableImopl r = new RunnableImopl(); Thread t = new Thread(); t.start(); for (int i = 0; i <20 ; i++) { System.out.println(Thread.currentThread().getName()+"---》"+i); } } } class RunnableImopl implements Runnable{ @Override public void run() { for (int i = 0; i <20 ; i++) { System.out.println(Thread.currentThread().getName()+"---》"+i); } } }

浙公网安备 33010602011771号