1 package multithread2; 2 3 /* 4 * 创建线程的第一种方法:继承Thread类 5 * 6 * 创建线程的第二种方式:实现Runnable接口 7 * 8 * 1,定义类实现Runnable接口. 9 * 2,覆盖接口中的run方法,将线程的任务代码封装到run方法中. 10 * 3,通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数进行传递. 11 * 为什么?因为线程的任务都封装在Runnable接口子类对象的…
public static void sleep(long millis);//使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行). 毫秒数结束后线程继续执行 package com.yang.Test.ThreadStudy; public class Demo01Sleep { public static void main(String[] args) throws InterruptedException { //模拟秒表 for (int i = 1; i <=60 ; i++)…
package cn.itcast.demo16.Demo07.Runnable;/** * @author newcityman * @date 2019/7/22 - 23:17 */public class RunnableImpl implements Runnable { @Override public void run() { for (int i = 0; i <20 ; i++) { System.out.println(Thread.currentThread().getNa…
Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的.但是 Runnable 不会返回结果,并且无法抛出经过检查的异常.Callable 需要依赖FutureTask ,FutureTask 也可以用作闭锁. 例子: package com.company; import java.util.concurrent.Callable;…
sleep方法是在Thread类中的一个静态方法,当一个线程调用了sleep方法,被调用的那个线程就会暂时的让出指定时间的CPU执行权,在这段时间也不会参与CPU的调度,当时间到了之后,就会重新回到就绪状态,等待CPU的再次调度,注意是就绪状态,而不是重新拿回CPU的执行权.并且,在休眠期间,只是会让出CPU的执行权,但是之前获得的锁资源,还是继续持有,等CPU调度到该线程重新获取到执行权的时候,就会继续运行sleep之后的代码.接下来用一个例子来说明Sleep期间不会放弃锁资源 public…
创建线程的第二中方式: /** *      步骤: 1定义类实现Runnable接口      2.实现Runnable接口中的run方法.      3.通过Thread类建立线程对象,并将Runnable 接口的子类对象作为实际参数传给Thread类的构造方法.      4.调用Thread类的start方法开启线程,并调用Runnable接口子类的run方法      为什么要将Runnable接口子类的对象传递给Thread类的构造方法?      因为线程的任务(要运行的代码)都封…
实现Runnable接口创建线程 使用Runnable创建线程步骤: package com.sutaoyu.Thread; //1.自定义一个类实现java.lang包下的Runnable接口 class MyRunnable implements Runnable{ // 2.重写run方法 @Override public void run() { //3.将要在线程中执行的代码编写在run方法中 for(int i = 0;i < 1000;i++) { System.out.print…
package TestException; public class test5 { public static void main(String[] args) { Test6 s1 = new Test6("张三"); Test6 s2= new Test6("撒"); //实现Runnable接口,执行多线程的实例 格式:new Thread(参数).start(); new Thread(s1).start(); new Thread(s2).start(…
实现Callable接口创建线程 Callable接口是在jdk5版本中加入的,这个接口在java.util.concurrent包下面,与其他两种方式不同的地方在于使用Callable接口创建的线程会获得一个返回值并且可以声明异常. 使用Callable创建线程步骤: 1.自定义一个类实现java.util.concurrent包下的Callable接口 2.重写call方法 3.将要在线程中执行的代码编写在call方法中 4.创建ExecutorService线程池 5.将自定义类的对象放入…
1.继承Thread类 public class MyThread extends Thread { public MyThread() { } public void run() { for(int i=0;i<10;i++) { System.out.println(Thread.currentThread()+":"+i); } } public static void main(String[] args) { MyThread mThread1=new MyThread…