zoukankan      html  css  js  c++  java
  • 线程Thread

    PART1:在Windows里启动一个程序就是启动一个线程。不同线程之间快速切换,所以感觉是很多线程在同时执行。

    Test.java

    class Test
    {
    	public static void main(String args[])
    	{
    		FirstThread ft = new FirstThread(); //ft就是线程对象
    		ft.start(); //启动线程 (start方法从Thread中extends来),注意,这里如果写成ft.run();那么就会先执行ft,再执行下面的代码。
    		
    		for(int i = 0 ; i <100 ; i++)		//这是主线程 和ft线程抢cpu
    			System.out.println("main-->"+ i );
    	}
    } 

    FirstThread.java

    class FirstThread extends Thread  //线程类
    {
    	public void run()//为什么必须是run?因为:这里是覆写了run方法
    	{
    		for(int i = 0 ; i < 100 ; i ++ )
    			System.out.println("FirstThread" + i );
    	}
    }  
    

     执行Test.java,每次打印的结果都不一样。因为两个线程不停抢CPU。

    PART2: java的单继承性可通过implements若干个接口的方式,弥补可多继承的缺陷。所以倾向于用下面的方法:

    Test.java

    class Test
    {
    	public static void main(String args[])
    		RunnableImpl ri = new RunnableImpl();//生成RunnableImpl接口对象
    		Thread t = new Thread(ri);//生成Thread对象,把ri作为构造函数的参数传给Thread对象
    		t.start();
    }
    

    Runnalbleimpl.java

    class RunnableImpl implements Runnable
    {
    	public void run()//run()是覆写的方法
    	{
    		for(int i = 0 ; i < 100 ; i ++ )
    			System.out.println("Runnable-->" + i );
    	}
    }
    

      中断线程:

    • Thread.sleep()    //休眠,括号内为毫秒
    • Thread.yield()   //当前线程让出CPU,但还有可能再抢到

      设置线程优先级:

    • setPriority()  //t.setPriority(Thread.MAX_PRIORITY);...
    • getPriority()  //t.getPriority();...

      线程优先级最大是10最小是1,默认是5。优先级大只是抢到CPU的概率大。

    PART3:

    如果两个线程同时使用一段代码,可能会在抢占的过程中出现重复或遗漏。可以同时生成两个不同的线程,但有时候,比如售票系统,必须用一个线程体。

                synchronized(this){
    //....
                }

    synchronized()相当于一把同步锁,得到的线程可以把{}里的程序(同步代码块)执行完毕,才释放锁,别的线程才能执行。

  • 相关阅读:
    VS2010 自动跳过代码现象
    Reverse Linked List II 【纠结逆序!!!】
    Intersection of Two Linked Lists
    Linked List Cycle II
    Remove Nth Node From End of List 【另一个技巧,指针的指针】
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Remove Duplicates from Sorted List
    Linked List Cycle
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3515350.html
Copyright © 2011-2022 走看看