博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中Thread (线程)
阅读量:3935 次
发布时间:2019-05-23

本文共 2258 字,大约阅读时间需要 7 分钟。

 

Thread

使用新线程的步骤:

  1. 通过覆写 Thread 的 run 方法,配置新线程需要做的事情
  2. 创建新线程对象 new YourThread()
  3. 开启线程 start

创建新线程的方法有很多,下面是一个示例:

class MyThread extends Thread {    @Override    public void run () {        System.out.println("在新的线程内运行的任务。这任务是独立的,不会影响主线程代码执行。");    }}public class Main {    public static void main (String... args) {        Thread myThread = new MyThread();   // 创建线程        mythread.start();                   // 运行线程    }}

也可以这样:

class MyThread implements Runnable {    @Override    public void run () {        System.out.println("在新的线程内运行的任务。这任务是独立的,不会影响主线程代码执行。");    }}public class Main {    public static void main (String... args) {        Thread myThread = new Thread(new MyThread());   // 创建线程        mythread.start();                               // 运行线程    }}

上面代码可以简写为:

// 使用匿名内部类进行简化public class Main {    public static void main (String... args) {        Thread myThread = new Thread () {                @Override                public void run () {                    System.out.println("在新的线程内运行的任务。这任务是独立的,不会影响主线程代码执行。");                }            };        myThread.start();    }}

使用 jdk8 的语法,甚至可以简化为:

public class Main {    public static void main (String... args) {        new Thread(() -> System.out.println("task")).start();    }}

其他:

t.join()

让当前线程阻塞并等待线程 t 结束再执行接下来代码

Thread.sleep()

让当前线程暂时休眠 n 毫秒,这过程不会释放所占用的对象锁

Thread.yield()

暂时退让,优先让其他线程先运行。如果没有线程在这个过程中抢占运行权,则继续运行

Executors 是一个常用的静态类,内置了很多线程池相关的操作。

线程池使用的基本语法:

// 1. 创建线程池ExecutorService service = Executors.newCachedThreadPool();// 2. 创建任务Runnable task = new Runnable() {        @Override        public void run() {            System.out.println(Thread.currentThread());        }    };// 3. 使用线程池调度任务for (int i = 0; i < 1000; i++) {    service.execute(task);}// 4. 关闭线程池service.shutdown();

可以简化为:

ExecutorService service = Executors.newCachedThreadPool();for (int i = 0; i < count; i++) {    service.execute(new Runnable() {            @Override            public void run() {                System.out.println(Thread.currentThread());            }        });}

可以进一步简化为(jdk8语法):

ExecutorService service = Executors.newCachedThreadPool();for (int i = 0; i < count; i++) {    service.execute(() -> System.out.println(Thread.currentThread()));}

 

 
 
 
 
 
 
 
posted @ 2018-11-24 00:07 阅读(...) 评论(...)

转载地址:http://wxhgn.baihongyu.com/

你可能感兴趣的文章
Mongo DB乐观锁之version在spring data中应用
查看>>
kafaka发送接收消息stream方式实例
查看>>
mavan--build之可执行jar与maven依赖jar
查看>>
JPA乐观锁@Version在MySQL、MongoDB、Solr中的配置及注意
查看>>
区间统计类guava中RangeSet使用以及注意
查看>>
Transactional事务的使用以及注意
查看>>
初识Web 应用框架--JHipster以及跨平台移动开发ionic
查看>>
java验证苹果支付收据(转载)
查看>>
关闭spring boot jackson的FAIL_ON_EMPTY_BEANS
查看>>
java7的新特性
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)
查看>>
java5、java6、java7、java8的新特性
查看>>
mysql中jpa开发针对BLOB字段的update问题
查看>>
微服务系统下Session登录问题记录
查看>>
mac系统如何生成SSH key与GitHub通信
查看>>
AES对称加密,以及javax.crypto.BadPaddingException: Given final block not properly padded 解决
查看>>
java加密——Jasypt开源工具包
查看>>
Spring cloud项目中MethodValidationPostProcessor拦截器与自定义拦截器
查看>>
序列化对象互转--Jackson中的ObjectMapper,解决超类派生问题,序列化问题
查看>>
swagger的API自动生成文档、自动生成其他语言请求文档、所有请求导入postman
查看>>