本文目錄一覽:
- 1、java中的sleep和wait的區別
- 2、java 中sleep()方法或者wait()方法的使用
- 3、java sleep()
- 4、java中的sleep是什麼意思
- 5、java sleep(1000)和wait(1000)有區別嗎?
- 6、java sleep方法
java中的sleep和wait的區別
sleep和wait的區別:
1、sleep的意思是:睡,睡覺,睡眠。
2、wait的意思是:等候,推遲,延緩等待,耽擱,伺候用餐。
拓展資料
sleep的用法
1、They were exhausted from lack of sleep
由於缺乏睡眠,他們非常疲憊。
2、During the car journey, the baby slept
坐車來的路上,寶寶睡著了。
3、I think he may be ready for a sleep soon.
我想他也許很快就要睡一覺了。
4、I can’t get to sleep with all that singing.
那些歌聲攪得我無法入睡。
5、I didn’t lose too much sleep over that investigation.
我並不太擔心那個調查。
wait
1、I walk to a street corner and wait for the school bus
我走到街角等校車。
2、There’ll be a car waiting for you
會有輛汽車等你。
3、I want to talk to you, but it can wait
我想和你談談,但可以晚點再說。
4、If you think this all sounds very exciting, just wait until you read the book
如果你覺得所有這些聽起來令人興奮,那就等著去讀這本書吧。
5、’Wait a minute!’ he broke in. ‘This is not giving her a fair hearing!’
「等一下,」他插嘴說,「這沒有給她一個公平的解釋機會!」
java 中sleep()方法或者wait()方法的使用
簡單說:sleep由線程自動喚醒,wait必須顯示用代碼喚醒。
sleep是Thread類的靜態方法。sleep的作用是讓線程休眠制定的時間,在時間到達時恢復,也就是說sleep將在接到時間到達事件事恢複線程執行,例如:
try{
System.out.println(“I’m going to bed”);
Thread.sleep(1000);
System.out.println(“I wake up”);
}
catch(IntrruptedException e) {
}
wait是Object的方法,也就是說可以對任意一個對象調用wait方法,調用wait方法將會將調用者的線程掛起,直到其他線程調用同一個對象的notify方法才會重新激活調用者,例如:
//Thread 1
try{
obj.wait();//suspend thread until obj.notify() is called
}
catch(InterrputedException e) {
}
java sleep()
下面分別是伺服器端和客戶端的代碼,先運行伺服器端,再運行客戶端
伺服器端:
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
public class ChatServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(9000);
ServerFrame sf = new ServerFrame();
sf.launchFrame();
List list = new ArrayList(); // 創建數組
while (true) { // 開啟多線程
Socket s = ss.accept();
list.add(s);
Thread t = new ServerThread(s, list, sf);
t.start();
}
}
}
class ServerThread extends Thread { // 創建線程類
Socket s;
BufferedReader in;
PrintWriter out;
ServerFrame sf;
public ServerThread(Socket s, List list, ServerFrame sf) {
this.s = s;
this.sf = sf;
sf.sokectList = list;
try {
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(s.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
while (true) {
try {
String str = in.readLine();
if (str == null)
continue;
sf.jta.append(“接收到:” + str + “\n”);
} catch (IOException e) {
return;
}
}
}
}
class ServerFrame {
List sokectList;
JTextField jtf;
JTextArea jta;
PrintWriter out;
public void launchFrame() {
JFrame frame = new JFrame(“伺服器端”); // 創建 frame對象
frame.setSize(400, 300); // 設置fram大小
frame.setLocation(300, 250);
jta = new JTextArea();
jta.setEditable(false);
jtf = new JTextField();
jtf.addActionListener(new ActionListener() { // 註冊監聽器
public void actionPerformed(ActionEvent arg0) {
send();
}
});
frame.getContentPane().add(new JScrollPane(jta));
frame.getContentPane().add(jtf, “South”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void send() { // 輸出文字
String text = this.jtf.getText();
this.jtf.setText(“”);
if(sokectList==null) {
jta.append(“無客戶端,發送失敗:” + text + “\n”);
return;
}
jta.append(“發送指令:” + text + “\n”);
Iterator it = sokectList.iterator();
while (it.hasNext()) {
Socket socket = (Socket) (it.next());
try {
out = new PrintWriter(socket.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
jta.append(“與客戶端連接失敗!\n”);
continue;
}
out.println(text);
out.flush();
}
}
}
客戶端:
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class ChatClient {
public static void main(String[] args) {
ChatClient cc = new ChatClient();
while(true)
cc.receive();
}
static boolean boo;
Frame clientFrame;
Panel topPanel;
TextArea topTextArea;
Socket s;
BufferedReader in;
PrintWriter out;
public ChatClient() {
this.clientFrame = new Frame(“客戶端”);
this.clientFrame.setBounds(350, 250, 150, 250);
this.clientFrame.setResizable(false);
this.clientFrame.setVisible(true);
this.topPanel = new Panel();
this.clientFrame.setBounds(350, 250, 150, 200);
this.topTextArea = new TextArea();
this.topPanel.add(this.topTextArea);
this.clientFrame.add(this.topPanel, BorderLayout.NORTH);
this.clientFrame.pack();
this.clientFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int var = JOptionPane.showConfirmDialog(null, “退出?”,
“退出”, JOptionPane.OK_CANCEL_OPTION);
if (var == JOptionPane.OK_OPTION)
System.exit(0);
}
});
try {
s = new Socket(“127.0.0.1”, 9000);//設置埠
in = new BufferedReader(new InputStreamReader(s.getInputStream()));//創建對象in
out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));//創建對象out
} catch(UnknownHostException e) {//捕捉異常
e.printStackTrace();
} catch(ConnectException e) {
JOptionPane.showMessageDialog(null, “與伺服器連接失敗,請確認伺服器是否已經開啟!”);
System.exit(-1);
} catch(IOException e) {
e.printStackTrace();
}
}
public void receive() { // 讀信息
try {
String text = in.readLine();
if(“STOP”.equals(text.toUpperCase())) {
if(boo) {
this.topTextArea.append(“結束髮送!\n”);
boo = false;
}
return;
}
if(“START”.equals(text.toUpperCase())) {
boo = true;
this.topTextArea.append(“開始向伺服器發送數據:\n”);
new SendThread(this).start();
return;
}
this.topTextArea.append(“接收到無效指令:” + text + “\n”);
} catch (SocketException e) {
JOptionPane.showMessageDialog(null, “與伺服器斷開連接!”);
System.exit(-1);
} catch (IOException e) {
e.printStackTrace();
return;
}
}
public void send() {
while(boo) {
String str = Math.random() + “”;
out.println(str);
out.flush();
this.topTextArea.append(“發送:” + str + “\n”);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class SendThread extends Thread {
ChatClient cc;
SendThread(ChatClient cc) {
this.cc = cc;
}
@Override
public void run() {
// TODO Auto-generated method stub
cc.send();
}
}
java中的sleep是什麼意思
SLEEP,英語單詞,名詞、動詞,作名詞時意為「睡眠,人名;(英)斯利普」,作動詞時意為「睡,睡覺」。
單詞發音英[sli_p]美[sli_p]基本用法sleep用作動詞的基本意思是「睡眠」,也可作「為(某數量的人)提供床位」解。
sleep與介詞to連用時一般都省略冠詞。sleep用作名詞的意思是「睡眠」,是不可數名詞;加不定冠詞時,表示「一段時間的睡眠」。
sleep的進行時可以表示按計劃、安排或打算即將發生的動作,這時句中往往有表示將來的時間狀語或特定的上下文。一站式出國留學攻略
java sleep(1000)和wait(1000)有區別嗎?
第一種解釋:\x0d\x0a\x0d\x0a功能差不多,都用來進行線程式控制制,他們最大本質的區別是:sleep()不釋放同步鎖,wait()釋放同步縮. \x0d\x0a \x0d\x0a還有用法的上的不同是:sleep(milliseconds)可以用時間指定來使他自動醒過來,如果時間不到你只能調用interreput()來強行打斷;wait()可以用notify()直接喚起.\x0d\x0a\x0d\x0a第二種解釋:\x0d\x0a\x0d\x0asleep是Thread類的靜態方法。sleep的作用是讓線程休眠制定的時間,在時間到達時恢復,也就是說sleep將在接到時間到達事件事恢複線程執行,例如:\x0d\x0a\x0d\x0atry{\x0d\x0aSystem.out.println(“I’m going to bed”);\x0d\x0aThread.sleep(1000);\x0d\x0aSystem.out.println(“I wake up”);\x0d\x0a}\x0d\x0acatch(IntrruptedException e) {\x0d\x0a}\x0d\x0a\x0d\x0await是Object的方法,也就是說可以對任意一個對象調用wait方法,調用wait方法將會將調用者的線程掛起,直到其他線程調用同一個對象的notify方法才會重新激活調用者,例如:\x0d\x0a\x0d\x0a//Thread 1\x0d\x0a\x0d\x0atry{\x0d\x0aobj.wait();//suspend thread until obj.notify() is called\x0d\x0a}\x0d\x0acatch(InterrputedException e) {\x0d\x0a}\x0d\x0a\x0d\x0a第三種解釋:\x0d\x0a\x0d\x0a這兩者的施加者是有本質區別的. \x0d\x0asleep()是讓某個線程暫停運行一段時間,其控制範圍是由當前線程決定,也就是說,在線程裡面決定.好比如說,我要做的事情是 “點火-燒水-煮麵”,而當我點完火之後我不立即燒水,我要休息一段時間再燒.對於運行的主動權是由我的流程來控制.\x0d\x0a\x0d\x0a而wait(),首先,這是由某個確定的對象來調用的,將這個對象理解成一個傳話的人,當這個人在某個線程裡面說”暫停!”,也是 \x0d\x0athisOBJ.wait(),這裡的暫停是阻塞,還是”點火-燒水-煮飯”,thisOBJ就好比一個監督我的人站在我旁邊,本來該線\x0d\x0a程應該執行1後執行2,再執行3,而在2處被那個對象喊暫停,那麼我就會一直等在這裡而不執行3,但這個流程並沒有結束,我一直想去煮飯,但還沒被允許,\x0d\x0a \x0d\x0a直到那個對象在某個地方說”通知暫停的線程啟動!”,也就是thisOBJ.notify()的時候,那麼我就可以煮飯了,這個被暫停的線程就會從暫停處\x0d\x0a繼續執行.\x0d\x0a\x0d\x0a其實兩者都可以讓線程暫停一段時間,但是本質的區別是一個線程的運行狀態控制,一個是線程之間的通訊的問題\x0d\x0a\x0d\x0a在java.lang.Thread類中,提供了sleep(),\x0d\x0a而java.lang.Object類中提供了wait(), notify()和notifyAll()方法來操作線程\x0d\x0asleep()可以將一個線程睡眠,參數可以指定一個時間。\x0d\x0a而wait()可以將一個線程掛起,直到超時或者該線程被喚醒。\x0d\x0a wait有兩種形式wait()和wait(milliseconds).\x0d\x0asleep和wait的區別有:\x0d\x0a 1,這兩個方法來自不同的類分別是Thread和Object\x0d\x0a 2,最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。\x0d\x0a 3,wait,notify和notifyAll只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在\x0d\x0a 任何地方使用\x0d\x0a synchronized(x){\x0d\x0a x.notify()\x0d\x0a //或者wait()\x0d\x0a }\x0d\x0a 4,sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常
java sleep方法
調用方法:Thread.sleep(0);
括弧內輸入要睡眠的毫秒數(1秒等於1000毫秒),調用這個方法會拋出異常,需要拋出或處理,它在睡眠被打斷時發生。
原創文章,作者:KEME,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141370.html