導航:首頁 > 編程語言 > java循環使用多線程

java循環使用多線程

發布時間:2024-11-09 11:06:04

1. java多線程有幾種實現方法

java中多線程的實現方法有兩種:
1.直接繼承thread類;
2.實現runnable介面同步內的實現方法容有五種:1.同步方法;2.同步代碼塊;3.使用特殊域變數(volatile)實現線程同步;4.使用重入鎖實現線程同步;5.使用局部變數實現線程同步

2. 基礎Java題 試編寫一個多線程的程序:啟動4個線程。其中兩個循環10次,每次將某全局變數加1,另兩個循環1

publicclassDay18_A{
publicstaticvoidmain(String[]args)throwsInterruptedException{
Recounrec=Recoun.getRec();
Thread[]trr=newThread[4];
for(inti=0;i<4;i++){
trr[i]=newThread(newNumberTest(rec,i),"線程"+(i+1)+": ");
}
for(Threadthread:trr){
thread.start();
}
for(Threadthread:trr){
thread.join();
}
System.out.println("所有線程結束查看結果:"+rec.getCount());
}
}

{
privateRecounre;
privateintn;
NumberTest(Recounr,inti){
this.re=r;
this.n=i;
}
publicvoidrun(){
for(inti=0;i<10;i++){
re.method(n);
}
}
}
classRecoun{
privateintcount=0;
privateRecoun(){
}
privatestaticfinalRecounrec=newRecoun();
publicstaticRecoungetRec(){
returnrec;
}
publicsynchronizedvoidmethod(inti){
if(i%2==0){
System.out.println(Thread.currentThread().getName()+(count++));
}else{
System.out.println(Thread.currentThread().getName()+(count--));
}
}
publicsynchronizedintgetCount(){
returncount;
}
}

3. JAVA中如何利用多線程同時運行多個方法

首先,這個同時,只是在宏觀上的,多線程環境,線程與線程之間,還是串列運行的。
要「回同時」運行多答個方法,那麼,就需要創建多個線程,然後,在線程的run()方法里,寫上你想要實現的邏輯。需如果創建多線程,這又是另一個問題(通過繼承Thread跟實現Runnable來實現)。

4. JAVA項目中哪些場景需要用到多線程,深感迷茫,請使用過的高手指點。

場景一:一個業務邏輯有很多次的循環,每次循環之間沒有影響,比如驗證1萬條url路徑是否存在,正常情況要循環1萬次,逐個去驗證每一條URL,這樣效率會很低,假設驗證一條需要1分鍾,總共就需要1萬分鍾,有點恐怖。這時可以用多線程,將1萬條URL分成50等份,開50個線程,沒個線程只需驗證200條,這樣所有的線程執行完是遠小於1萬分鍾的。

場景二:需要知道一個任務的執行進度,比如我們常看到的進度條,實現方式可以是在任務中加入一個整型屬性變數(這樣不同方法可以共享),任務執行一定程度就給變數值加1,另外開一個線程按時間間隔不斷去訪問這個變數,並反饋給用戶。
總之使用多線程就是為了充分利用cpu的資源,提高程序執行效率,當你發現一個業務邏輯執行效率特別低,耗時特別長,就可以考慮使用多線程。不過CPU執行哪個線程的時間和順序是不確定的,即使設置了線程的優先順序,因此使用多線程的風險也是比較大的,會出現很多預料不到的問題,一定要多熟悉概念,多構造不同的場景去測試才能夠掌握!

5. java嵌套循環次數很多,怎麼用多線程執行降低時間

將循環的數據分組,比如每組100條,分完之後開啟線程,分別執行,線程可以用繼承thread的方式,也可以實現runnable介面

6. 用JAVA實現多線程編寫,使得許多小球在界面內循環跳動

下面這段代碼應該符合你的需求

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class BounceThread
{ public static void main(String[] args)
{ JFrame frame = new BounceThreadFrame();
frame.show();
}
}

class BounceThreadFrame extends JFrame
{ public BounceThreadFrame()
{ setSize(300, 200);
setTitle("Bounce");

addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
} );

Container contentPane = getContentPane();
canvas = new JPanel();
contentPane.add(canvas, "Center");
JPanel p = new JPanel();
addButton(p, "Start",
new ActionListener()
{ public void actionPerformed(ActionEvent evt)
{ Ball b = new Ball(canvas);
b.start();
}
});

addButton(p, "Close",
new ActionListener()
{ public void actionPerformed(ActionEvent evt)
{ canvas.setVisible(false);
System.exit(0);
}
});
contentPane.add(p, "South");
}

public void addButton(Container c, String title,
ActionListener a)
{ JButton b = new JButton(title);
c.add(b);
b.addActionListener(a);
}

private JPanel canvas;
}

class Ball extends Thread
{ public Ball(JPanel b) { box = b; }

public void draw()
{ Graphics g = box.getGraphics();
g.fillOval(x, y, XSIZE, YSIZE);
g.dispose();
}

public void move()
{ if (!box.isVisible()) return;
Graphics g = box.getGraphics();
g.setXORMode(box.getBackground());
g.fillOval(x, y, XSIZE, YSIZE);
x += dx;
y += dy;
Dimension d = box.getSize();
if (x < 0)
{ x = 0; dx = -dx; }
if (x + XSIZE >= d.width)
{ x = d.width - XSIZE; dx = -dx; }
if (y < 0)
{ y = 0; dy = -dy; }
if (y + YSIZE >= d.height)
{ y = d.height - YSIZE; dy = -dy; }
g.fillOval(x, y, XSIZE, YSIZE);
g.dispose();
}

public void run()
{ try
{ draw();
for (int i = 1; i <= 1000; i++)
{ move();
sleep(5);
}
}
catch(InterruptedException e) {}
}

private JPanel box;
private static final int XSIZE = 10;
private static final int YSIZE = 10;
private int x = 0;
private int y = 0;
private int dx = 2;
private int dy = 2;
}

閱讀全文

與java循環使用多線程相關的資料

熱點內容
vhd文件有什麼用 瀏覽:482
編程小朋友看什麼書 瀏覽:623
經營如何讓數據說話 瀏覽:258
如何在手機上升級opop 瀏覽:614
coreldrawx5免費視頻教程 瀏覽:725
網站引導頁面源碼 瀏覽:234
個人簡歷範文word 瀏覽:220
uc下載的視頻怎樣提取到文件 瀏覽:499
英雄下載下載最新版本2015下載安裝 瀏覽:433
NX深孔鑽編程替換面如何操作 瀏覽:725
手機怎麼刪除pdf文件 瀏覽:256
蘋果手機沒有efs文件夾怎麼辦 瀏覽:723
metro軟體在哪個文件夾 瀏覽:69
怎麼用手機登錄編程貓 瀏覽:400
文本md204顯示器如何編程 瀏覽:705
如何將表中重復數據標記 瀏覽:859
中級資料庫系統工程師應用技術考什麼 瀏覽:404
博途編程如何設置停止鍵 瀏覽:409
python3刪除文件內容 瀏覽:754
如何優化seo數據分析 瀏覽:132

友情鏈接