重学JAVA基础(四):线程的创建与执行

1.继承Thread

  

public class TestThread extends Thread{

    public void run(){
        System.out.println(Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        Thread t = new TestThread();
        t.start();
    }
}

2.实现Runnable

public class TestRunnable implements Runnable
{

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());

    }

    public static void main(String[] args) {
        Thread t = new Thread(new TestRunnable());
        t.start();
    }
}

3.线程池

public class TestThreadPool {

    public static ExecutorService singlePool = Executors.newSingleThreadExecutor();

    private static ExecutorService fixedPool = Executors.newFixedThreadPool(2);

    private static ExecutorService cachedPool = Executors.newCachedThreadPool();

    private static ThreadPoolExecutor tpe = new ThreadPoolExecutor(5, 10, 5000, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new DefaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());

    private static class DefaultThreadFactory implements ThreadFactory{
        @Override
        public Thread newThread(Runnable r) {
            Thread t = new Thread(r);
            return t;
        }
    }

    public static void main(String[] args) {
        singlePool.execute(new TestThreadP());
        fixedPool.execute(new TestThreadP());
        cachedPool.execute(new TestThreadP());
        tpe.execute(new TestThreadP());
    }

}
class TestThreadP implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }

}
时间: 2024-08-28 23:40:36

重学JAVA基础(四):线程的创建与执行的相关文章

重学JAVA基础(七):线程的wait、notify、notifyAll、sleep

/** * 测试thread的wait notify notifyAll sleep Interrupted * @author tomsnail * @date 2015年4月20日 下午3:20:44 */ public class Test1 { /** * 对象锁 * @author tomsnail * @date 2015年4月20日 下午3:14:13 */ private static final Object lockObject = new Object(); /** * 等

重学JAVA基础(八):锁的基本知识

1.线程状态 如上图,当我们新建一个线程,并start后,其实不一定会马上执行,因为只有操作系统调度了我们的线程,才能真正进行执行,而操作系统也随时可以运行其他线程,这时线程又回到可运行状态.这个过程是操作系统控制的,不是我们能控制的.我们能控制的是将线程变为blocked,并从blocked变为runable状态. 在以前实验的wait和notify中,我当时并没有注意到notify后会进行锁阶段,以为notify后直接进入runable状态,等待操作系统调度.  从上面的图中可以看到,我们n

重学JAVA基础(二):Java反射

看一下百度的解释: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息    以及动态调用对象的方法的功能称为java语言的反射机制. 先看一下一个例子: 这是最简单的反射使用方法,通过反射来调用类的方法. 下面通过一个需求来做反射实验:有3种人类(黄,白,黑),分别继承于Human类,都有人类的共同操作Behaviour /** * 行为,区别于动物 * @author tomsnail *

重学JAVA基础(一):PATH和CLASSPATH

我想大多数Java初学者都会遇到的问题,那就是怎么配置环境,执行java -jar xxx.jar  都会报NoClassDefFindError,我在最开始学习的时候,也遇到了这些问题. 1.PATH path是路径的意思,我们直接在控制台运行一个程序时候,系统都会在指定的path下去找有没有这个程序,如果有就执行,没有就报错或者提示. 在windows系统中,使用echo %PATH%来查看PATH下的路径 在linux系统中,使用 echo $PATH 我们将java的bin目录加入pat

重学JAVA基础(五):面向对象

1.封装 import java.util.Date; public class Human { protected String name; protected BirthDay birthDay; protected String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return

重学JAVA基础(六):多线程的同步

1.synchronized关键字 /** * 同步关键字 * @author tomsnail * @date 2015年4月18日 下午12:12:39 */ public class SyncThreadTest { private static final byte[] lock = new byte[1]; /** * 同步方法 * @author tomsnail * @date 2015年4月18日 下午12:15:30 */ public synchronized void te

重学JAVA基础(三):动态代理

1.接口 public interface Hello { public void sayHello(); } 2.实例类 public class Hello2 { public void sayHello() { System.out.println("hello world2!"); } } public class Hello3 extends Hello2{ } public class HelloImpl implements Hello{ @Override public

Java语言基础-多线程-①线程的创建和启动

简单阐释进程和线程 对于进程最直观的感受应该就是“windows任务管理器”中的进程管理: (计算机原理课上的记忆已经快要模糊了,简单理解一下):一个进程就是一个“执行中的程序”,是程序在计算机上的一次运行活动.程序要运行,系统就在内存中为该程序分配一块独立的内存空间,载入程序代码和资源进行执行.程序运行期间该内存空间不能被其他进程直接访问.系统以进程为基本单位进行系统资源的调度和分配.何为线程?线程是进程内一次具体的执行任务.程序的执行具体是通过线程来完成的,所以一个进程中至少有一个线程.回忆

重学Java(一):与《Java编程思想》的不解之缘

说起来非常惭愧,我在 2008 年的时候就接触了 Java,但一直到现在(2018 年 10 月 10 日),基础知识依然非常薄弱.用一句话自嘲就是:十年 IT 老兵,Java 菜鸡一枚. 于是,我想,不如静下心来,重新读一遍那些经典的 Java 技术书,并且没读完一章就输出一篇原创技术文章.从哪一本开始呢?想了一想,还是从<Java 编程思想>开始吧!毕竟这本书赢得了全球程序员的广泛赞誉,从 Java 的基础语法到最高级特性,都能指导我们 Java 程序员轻松掌握. 记得刚上大学那会,就买了